[android-group-japan: 3992] 優先アプリケーションの設定について

1,377 views
Skip to first unread message

sas

unread,
May 1, 2010, 11:47:06 AM5/1/10
to 日本Androidの会
お世話になります。
現在、設定管理のアプリケーションを開発しようと考えてますが、
優先アプリケーションの設定の仕方が色々と調べてもわからなかったので教えてください。

例えば、Intentを投げると関連するアプリ一覧が出て、「常にこの操作で使用する」と言った設定や、とあるアプリを標準のブラウザにする設定等を
現在開発しているアプリで制御したいのですが、これって実現可能でしょうか?

よろしくお願いします。

--
このメールは Google グループのグループ「日本Androidの会」の登録者に送られています。
このグループに投稿するには、android-g...@googlegroups.com にメールを送信してください。
このグループから退会するには、android-group-j...@googlegroups.com にメールを送信してください。
詳細については、http://groups.google.com/group/android-group-japan?hl=ja からこのグループにアクセスしてください。

田代透

unread,
May 1, 2010, 9:26:54 PM5/1/10
to android-g...@googlegroups.com
同じインテントを処理するレシーバーが複数ある場合に、システム的に選択するためのダイアログが出ます。
このダイアログ上の操作を、ユーザーでなく、プログラム中で行いたいということでしょうか?

だとすると、それは無理ではないかと思います。

queryIntentActivitiesを使いインテントを処理できるオブジェクトの情報を受け取り、その中から指定して実行するといったことなら可能かもしれません。

2010年5月2日0:47 sas <androi...@gmail.com>:

mi.chi

unread,
May 2, 2010, 3:12:42 AM5/2/10
to 日本Androidの会
ちかむねといいます。

便乗で私も常々疑問に感じていたことを1つ。

基本的に、田代さんの意見と同意見なのですが、
Dolphin Browserでは、プログラム中からデフォルトのブラウザを
変更出来ているように見えます。

たぶん、実現方法自体は正攻法ではなさそうな感触は感じているのですが、
どのように実現されているのか知らないままです。

どなたか「こんな風にしているんじゃない?」という話をご存知でしたら、
教えてください。

Tanaka

unread,
May 2, 2010, 11:48:24 AM5/2/10
to 日本Androidの会
テレマークス田中と申します。

デフォルトの設定や解除は
PackageManagerのaddPreferredActivityや
clearPackagePreferredActivities
で行えると思います。

mi.chi

unread,
May 9, 2010, 3:31:35 AM5/9/10
to 日本Androidの会
ちかむねです。返事が遅くなってしまい、申し訳ありません。

なんと、標準インターフェースで可能なんですね!知らなかったです。
ありがとうございます。やってみます。

sas

unread,
May 10, 2010, 12:01:25 PM5/10/10
to 日本Androidの会
皆様、貴重な情報ありがとうございました。
この情報を元にサンプルとして簡単なブラウザアプリ(MyApp)を作成してデフォルトブラウザの設定、解除が出来るか試してみました。

#デフォルトの解除は以下のコードで出来ました
PackageManager packages = getPackageManager();
Context context = getApplicationContext();
ComponentName component = new ComponentName(context.getPackageName(),
MyApp.class.getName());

packages.clearPackagePreferredActivities(context.getPackageName());

#でもデフォルトの設定は以下のコードではなぜか上手く行かなかったです(エラーは発生しないのですが、デフォルト設定されません)
PackageManager packages = getPackageManager();
Context context = getApplicationContext();
ComponentName component = new ComponentName(context.getPackageName(),
MyApp.class.getName());

IntentFilter filter = new IntentFilter("android.intent.action.VIEW");
filter.addCategory("android.intent.category.DEFAULT");
filter.addCategory("android.intent.category.BROWSABLE");
filter.addDataScheme("http");
filter.addDataScheme("https");
filter.addDataScheme("about");

ComponentName[] components = new ComponentName[] {
new ComponentName(context.getPackageName(), MyApp.class.getName())
};
packages.addPreferredActivity(filter,
IntentFilter.MATCH_CATEGORY_EMPTY, components, component);

#作成したアプリのマニフェスト
<intent-filter>
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.DEFAULT" />
<category android:name="android.intent.category.BROWSABLE" />
<data android:scheme="http" />
<data android:scheme="https" />
<data android:scheme="about" />
</intent-filter>

<uses-permission
android:name="android.permission.SET_PREFERRED_APPLICATIONS"></uses-
permission>
Reply all
Reply to author
Forward
0 new messages