我使用下面的代码来分享其他应用程序的照片并打印它们的包名:
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应用。我怎么添加呢?
我找到了这个方法,但不确定它是不是最好的方法。
我的方法如下:
首先,删除
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);
}
}
第三,创建自己的应用程序选择器,以显示ListView对话框显示resolveInfo的项目,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);