2

以下のコードを使用して、他のアプリで写真を共有し、そのパッケージ名を出力します。

Intent sharingIntent = new Intent(Intent.ACTION_SEND);
sharingIntent.setType("image/jpeg");
sharingIntent.putExtra(Intent.EXTRA_STREAM, Uri.parse(FilePath));
PackageManager packageManager = this.getPackageManager();
List<ResolveInfo> resolveInfo = packageManager.queryIntentActivities(sharingIntent, PackageManager.MATCH_DEFAULT_ONLY);
int i = 0;
while(i < resolveInfo.size()) {
    System.out.println(i + "  " + resolveInfo.get(i).activityInfo.packageName);
    i++;
}
startActivity(Intent.createChooser(sharingIntent, "Share");

そして、写真を共有できる9つのパッケージ名の下に取得します:

06-19 16:55:22.460: I/System.out(13020): 0  com.amazon.kindle
06-19 16:55:22.460: I/System.out(13020): 1  com.android.bluetooth
06-19 16:55:22.460: I/System.out(13020): 2  com.google.android.apps.uploader
06-19 16:55:22.460: I/System.out(13020): 3  com.ecareme.asuswebstorage
06-19 16:55:22.460: I/System.out(13020): 4  com.google.android.talk
06-19 16:55:22.460: I/System.out(13020): 5  com.google.android.gm
06-19 16:55:22.460: I/System.out(13020): 6  com.aripollak.picturemap
06-19 16:55:22.460: I/System.out(13020): 7  com.instagram.android
06-19 16:55:22.460: I/System.out(13020): 8  com.facebook.katana

アプリを選択しているときにいくつかのアプリをフィルタリングしたい場合。
たとえば、共有アプリ リストから Facebook アプリをフィルター処理したいとします。
どうすれば dd できますか?

4

1 に答える 1

1

メソッドを見つけましたが、それが最善の方法かどうかはわかりません。
以下の私の方法:
まず、行を削除します

startActivity(Intent.createChooser(sharingIntent, "Share");

次に、次のようにリスト resolveInfo からフィルター処理するアプリを削除します。

for(i = resolveInfo.size(); i >= 0; i--) {
    if((resolveInfo.get(i).activityInfo.packageName).equals("com.facebook.katana")) {
        resolveInfo.remove(i);
    }
}

3 番目に、ResolveInfo のアイテムを表示する ListView ダイアログを表示する独自のアプリ チューザーを作成しresolveInfo.get(i).activityInfo.loadLabel(pm)resolveInfo.get(i).activityInfo.loadIcon(pm)アプリ名とアイコンが存在するようにします。

最後に、項目 i をクリックすると、以下のコードを使用して写真を共有します。

Intent mysharingIntent = new Intent(Intent.ACTION_SEND);
mysharingIntent.setType("image/jpeg");
mysharingIntent.putExtra(Intent.EXTRA_STREAM, Uri.parse(FilePath));
mysharingIntent.setPackage(resolveInfo.get(i).activityInfo.packageName);
startActivity(mysharingIntent);
于 2013-06-19T10:13:28.023 に答える