Android分享中,如何过滤指定的应用,并且对不同的分享方式发送不同的内容?
Posted on 2016-02-29 17:20 work hard work smart 阅读(811) 评论(0) 编辑 收藏 举报网上找到的一篇关于: 针对不同的应用,使用不同的方式的文章。原文地址
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(); } }
作者:Work Hard Work Smart
出处:http://www.cnblogs.com/linlf03/
欢迎任何形式的转载,未经作者同意,请保留此段声明!