Android 分享功能,过滤掉不需要的组件,解决出现“Android系统“问题
来源:互联网 发布:日本av作品番号数据库 编辑:程序博客网 时间:2024/05/22 17:18
转载自:http://www.dewen.io/q/1742#ans3804
但是实际开发中遇到一个问题,就是有些应用会注册多个send入口,比如qq、微信和百度云,这个时候过滤出来的包名是相同的,相同的包名会被系统包裹为“Android系统”,十分影响用户体验,经过研究修改如下(红色部分为主要修改点,这样就可以指定具体Activity,避免因为包名相同而出现“Android系统”现象):
public static void shareContentNoUs(Context context, String text) { Activity activity = (Activity) context; Intent it = new Intent(Intent.ACTION_SEND); it.setType("text/plain"); List<ResolveInfo> resInfo = activity.getPackageManager().queryIntentActivities(it, PackageManager.MATCH_DEFAULT_ONLY); 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; } else if (activityInfo.packageName.contains("com.suning.netdisk")) { continue; } targeted.putExtra(Intent.EXTRA_SUBJECT, context.getString(R.string.share)); targeted.putExtra(Intent.EXTRA_TEXT, text); targeted.setPackage(activityInfo.packageName); <span style="color:#ff0000;">targeted.setClassName(activityInfo.packageName, activityInfo.name);</span> targetedShareIntents.add(targeted); } try { if (targetedShareIntents.size() == 0) { Toast.makeText(activity, "不存在分享组件", Toast.LENGTH_SHORT).show(); return; } Intent chooserIntent = Intent.createChooser(targetedShareIntents.remove(0), context.getString(R.string.share_choose_application)); 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[] {})); activity.startActivity(chooserIntent); } catch (Exception ex) { Toast.makeText(activity, "不存在分享组件", Toast.LENGTH_SHORT).show(); } } else { Toast.makeText(activity, "不存在分享组件", Toast.LENGTH_SHORT).show(); } }
0 0
- Android 分享功能,过滤掉不需要的组件,解决出现“Android系统“问题
- Android Studio 过滤不需要的Log
- Android Studio 过滤不需要的Log
- Android Studio 过滤不需要显示的log
- Android系统中分享功能的实现
- 探索Android调用系统的分享功能
- android系统自带的分享功能
- Android调用系统本身的分享功能
- Android 自带的系统分享功能
- Android 调用系统的分享功能
- 探索Android调用系统的分享功能
- Android Studio中系统出现中文乱码问题的解决
- Android分享---调用系统自带的分享功能
- Android:调用系统分享功能
- Android:调用系统分享功能
- Android:调用系统分享功能
- Android 解决qq分享后返回程序出现的Bug
- android 过滤掉系统 安装的应用
- 设计模式学习笔记--迭代(Iterator)模式
- tomcat启动失败
- Android ViewGroup拦截触摸事件详解
- Select模型(PIPE)
- how to remove nil and blank string in an array in Ruby
- Android 分享功能,过滤掉不需要的组件,解决出现“Android系统“问题
- xcode工程的文件夹类型 folder References group
- 超越Administrator的权限
- 关于Handler、 Looper 、MessageQueue的认识
- 必须掌握的八个DOS命令
- Valid Parentheses
- PDU编码规则
- 个人感悟
- HDU1269(Tarjan算法)