2 csh 34 csh_34 于 2013.07.01 16:48 提问

在 android 中分享照片时如何过滤应用程序

我使用下面的代码通过其它的程序来来分享照片,然后打印它们的包名:

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

如果当我选择应用程序时想过滤一些其它的程序,例如,我想从app列表中过滤 facebook 程序,如何实现?

1个回答

Jave_
Jave_   2013.07.01 16:56
已采纳
    Intent it = new Intent(Intent.ACTION_SEND);
    it.setType("image/jpeg");
    List<ResolveInfo> resInfo = getPackageManager().queryIntentActivities(it, 0);
    if (!resInfo.isEmpty()) {
        List<Intent> targetedShareIntents = new ArrayList<Intent>();
        for (ResolveInfo info : resInfo) {
            Intent targeted = new Intent(Intent.ACTION_SEND);
            targeted.setType("image/jpeg";
            ActivityInfo activityInfo = info.activityInfo;

            // judgments : activityInfo.packageName, activityInfo.name, etc.
            if (activityInfo.packageName.contains("facebook") ||activityInfo.name.contains("facebook")) {
                continue;
            }
            targeted.setPackage(activityInfo.packageName);
            targetedShareIntents.add(targeted);
        }

        Intent chooserIntent = Intent.createChooser(targetedShareIntents.remove(0), "Select app to share");
        if (chooserIntent == null) {
            return;
        }
        try {
chooserIntent .putExtra(Intent.EXTRA_STREAM, Uri.parse(FilePath));
            startActivity(chooserIntent);
        } catch (android.content.ActivityNotFoundException ex) {
            Toast.makeText(this, "Can't find share component to share", Toast.LENGTH_SHORT).show();
        }
    }
Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!
其他相关推荐
Android分享中,如何过滤指定的应用,并且对不同的分享方式发送不同的内容?
摘要 安卓系统本身可以很简便的实现分享功能,因为我们只需向startActivity传递一个 ACTION_SEND 的Intent,系统就为我们弹出一个应用程序列表,如果我们再指定intent为chooser的方式,那么这个列表就能每次都出现而且都是相同的操作。 利用系统的api实现分享的代 安卓系统本身可以很简便的实现分享功能,因为我们只需向startActivity传递一个ACTI
Android开发之 选择相册图片或者拍照
在我们的Android开发中肯定都会遇到要选择本地相册的图片或者是用相机进行拍照使用图片。简单的讲解一下如何使用,比如我们要上传头像时总会使用的。这个步骤一般就是:1.点击头像然后会弹出一个菜单,然后我们选择是从相册中选择图片还是使用相机拍照;2.选择照片或者拍照以后保存后照片的Id。基本就是这个样子比较简单的功能 public class MainActivity extends Activity
android分享途径过滤的实现方法
/** * * 类描述:android分享时,过滤出能发送文本应用程序的列表 * 功能详细描述: * * @author */ public class ShareFilterActivity extends Activity { //想要过滤出的应用程序列表,前为应用程序的包名,后为应用程序的入口类名 public static final String[][]
android防止oom的图片加载例子
安卓在加载大图的时候经常会出现oom的错误,给大家分享我的一些处理经验。
android createChooser 过滤多余app
比如说,想发送带有附件的邮件,然后打开邮件的客户端,结果弹出一大群的不相关的app,比如蓝牙啊,Skype啊。 直接上代码 Intent iEmail = new Intent(android.content.Intent.ACTION_SEND); iEmail.setType("message/rfc822"); try {
iOS中选择相册照片添加到应用程序中
例如QQ、微信等的说说,评论等功能需要调用手机相册添加并发表图片。 再此就简单的介绍一下如何从相册中添加图片。1、首先创建调用相册的按钮,再次是给UIImageView添加点击手势来实现。 self.tupianImageview = [[UIImageView alloc]initWithFrame:CGRectMake(SCREEN_WIDTH-69, 50, 20, 20)]; s
加载图片出错时,加载其他图片
这个用到 onerror 事件。 onerror 事件会在文档或图像加载过程中发生错误时被触发。 加载页面时,如果加载logo.png错误,就会加载logo2.png<img src="logo.png" height="98" width="98" onerror="showImgDelay(this,'logo2.png','2')">function showImgDelay(imgObj
android微信分享到朋友圈 图片过大闪退
原先集成过微信的分享,分享到朋友圈和微信对话都没有问题。 项目上线由于图片各异,最近会偶尔出现分享到朋友圈时候根本就打不开share的界面,但是到微信聊天是可以; 下面贴出先前的代码: Bitmap bmp = BitmapFactory.decodeResource(getResources(), R.drawable.send_img); WXImageObject imgObj =
将自己的应用添加到安卓系统的可分享应用列表中
今天老大给了个任务,将自己的应用添加到安卓系统的可分享应用列表中。先是查找资料,但把需求弄反了,本是将自己的应用添加到安卓系统的可分享应用列表中,但我却看的是怎么把应用中的东西分享出去。不过最终经过各种测试,终于实现了该功能。其实代码还是挺简单的。 intent-filter> action android:name="android.intent.action.SEND"/>
Android7.0及以上拍照获取照片无法使用file://,使用content://URI
代码的改写方法 /** * 老方法[Android7.0以及以上报错FileUriExposedException] */ private void doTakePhotoOld() { Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE); if (intent.resolveA...