Android分享中,如何过滤指定的应用,并且对不同的分享方式发送不同的内容?

网上找到的一篇关于: 针对不同的应用,使用不同的方式的文章。原文地址

String contentDetails = "";
        String contentBrief = "";
        String shareUrl = "";
        Intent it = new Intent(Intent.ACTION_SEND);
        it.setType("text/plain");
        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("text/plain");
                ActivityInfo activityInfo = info.activityInfo;
                // judgments : activityInfo.packageName, activityInfo.name, etc.
                if (activityInfo.packageName.contains("bluetooth") || activityInfo.name.contains("bluetooth")) {
                    continue;
                }
                if (activityInfo.packageName.contains("gm") || activityInfo.name.contains("mail")) {
                    targeted.putExtra(Intent.EXTRA_TEXT, contentDetails);
                } else if (activityInfo.packageName.contains("zxing")) {
                    targeted.putExtra(Intent.EXTRA_TEXT, shareUrl);
                } else {
                    targeted.putExtra(Intent.EXTRA_TEXT, contentBrief);
                }
                targeted.setPackage(activityInfo.packageName);
                targetedShareIntents.add(targeted);
            }
            Intent chooserIntent = Intent.createChooser(targetedShareIntents.remove(0), "Select app to share");
            if (chooserIntent == null) {
                return;
            }
            // A Parcelable[] of Intent or LabeledIntent objects as set with
            // putExtra(String, Parcelable[]) of additional activities to place
            // a the front of the list of choices, when shown to the user with a
            // ACTION_CHOOSER.
            chooserIntent.putExtra(Intent.EXTRA_INITIAL_INTENTS, targetedShareIntents.toArray(new Parcelable[] {}));
            try {
                startActivity(chooserIntent);
            } catch (android.content.ActivityNotFoundException ex) {
                Toast.makeText(this, "Can‘t find share component to share", Toast.LENGTH_SHORT).show();
            }
        }

  

时间: 2024-12-18 00:15:39

Android分享中,如何过滤指定的应用,并且对不同的分享方式发送不同的内容?的相关文章

Android开发中的一些小问题如发现了以元素 ‘d:skin’ 开头的无效内容

[Android]打开eclipse报错:发现了以元素 ‘d:skin’ 开头的无效内容.此处不应含有子元素. [错误]打开eclipse报错:发现了以元素 ‘d:skin’ 开头的无效内容.此处不应含有子元素. [具体报错信息] Error parsing D:/android-sdks/system-images/android-22/android-wear/armeabi-v7a/devices.xml cvc-complex-type.2.4.d: 发现了以元素 ‘d:skin’ 开头

Android应用中实现系统“分享”接口

在android下各种文件管理器中,我们选择一个文件,点击分享可以看到弹出一些app供我们选择,这个是android系统分享功能,我们做的app也可以出现在这个列表中.   第一步:在Manifest.xml进行配置,比普通的activity中多增加一个Intent过滤器 <activity android:name="com.example.share.MainActivity" android:label="@string/app_name" > &

Android已上线应用开源分享中(第一季)

这是我上线的第一个android应用,在百度.腾讯.豌豆荚等平台测试通过,也有了部分用户,还是可以的啊,哈哈.现在分享给大家,当然,源码我也会分享. 1.软件是一个管理wifi的小工具 (1)查询.连接周围wifi信号,查看当前使用的wifi信号的基本信息(wifi名称.信号强度等) (2)管理使用过的wifi信号,可以设置不同信号的优先级,在开启自动连接wifi服务的功能时,系统会按照设置的优先级自动连接当前可用wifi信号中优先级最高的信号.其中设置屏蔽的信号不会被连接. (3)查看周围wi

Android -- 分享功能和打开指定程序

打开指定程序                                                                                Intent intent = new Intent(); ComponentName cmp = new ComponentName("com.sina.weibo","com.sina.weibo.EditActivity"); intent.setAction(Intent.ACTION_M

《Python CookBook2》 第一章 文本 - 过滤字符串中不属于指定集合的字符 &amp;&amp; 检查一个字符串是文本还是二进制

过滤字符串中不属于指定集合的字符 任务: 给定一个需要保留的字符串的集合,构建一个过滤函数,并可将其应用于任何字符串s,函数返回一个s的拷贝,该拷贝只包含指定字符集合中的元素. 解决方案: import string allchars = string.maketrans('','') #all chars table def makefilter(keep): delchars = allchars.translate(allchars,keep) def thefilter(s): retu

Android 第三方分享中遇到的问题以及解决方案

本文来自http://blog.csdn.net/liuxian13183/ ,引用必须注明出处! 第三方登录和分享过程中难免遇到各种纠结的问题,下面将我遇到的分享给大家. 先说第三方登录 1.首先要搞清楚后台同事要你传的是code还是token,因为先传code,token值后台同事也可以获得.正常的步骤是先获得code,再拿code去取得token. 2.新浪和QQ的第三方登录,网上例子大把,但要做奇虎和支付宝的比较困难,还好网上找到一个例子,加部分注释分享给大家:http://downlo

Android开发中遇到的问题和解答汇总

如何在ViewPager中的各个Fragment间传递数据并刷新Fragment界面?<点击查看详情> android Intent 本身就可以附加数据 为何还用 bundle?<点击查看详情> android 做一个pdf阅读器项目,求思路<点击查看详情> iOS 和 Android 应用内部集成分享按钮的问题<点击查看详情> 保存在Application子类中的全局变量什么情况下会丢失?<点击查看详情> 如何理解这句话,安卓的,query参数

Android Studio如何选择查看指定进程的log?

今天说一个简单的东东,关于Android Studio在logcat中如何查看指定进程的log. 关于过滤你自己所开发的应用的log,在这篇文章中:Android Studio如何给log添加过滤项(Filters)?有提及.当 然很多时候可能我们会有这样的场景,我们想看某一个进程的log,比如我想看酷狗的log,但是如果process那栏的进 程很多,这个时候logo也会非常多,这种情况下,你很难分辨出哪个logo是属于酷狗的. 其实,Android Studio还是有和Eclipse一样的选

Android Studio中怎么使用DDMS工具?

随着android studio的广泛使用,开发人员对相关工具的使用需求更加凸显.昨天在一个android studio教程网站上,看到一篇有关DDMS工具使用的相关知识,感觉很不错,分享给大家,一起来看看吧,新技能get走起~~ 首先,我们需要了解的是DDMS工具是个什么鬼? 其实,DDMS(Dalvik Debug Monitor Service),是 Android 开发环境中的Dalvik虚拟机调试监控服务.可以进行的操作有:为测试设备截屏,查看特定行程中正在运行的线程以及堆信息.Log