3
String message = "Text I want to share";
Intent share = new Intent(Intent.ACTION_SEND);
share.setType("text/plain");
share.putExtra(Intent.EXTRA_TEXT, message);
startActivity(Intent.createChooser(share,"Share on"));

现在它显示默认选项,如:Bluetooth, Email, Facebook, Gmail, LinkedIn, Messaging, Share Via Barcode.

或者这些是已安装的应用程序?

我想知道,我怎样才能从这个列表中删除一些。就像我想删除Share Via Barcode

并添加其他内容?

谢谢你

4

3 回答 3

8

使用以下代码将新项目添加到选择器屏幕。

Intent share = new Intent(Intent.ACTION_SEND);
share.setType("text/plain");       
share.putExtra(Intent.EXTRA_TEXT, message);

Intent addIntent = ;//whatever you want

Intent chooser = new Intent(Intent.ACTION_CHOOSER);
chooser.putExtra(Intent.EXTRA_INTENT, share );      
chooser.putExtra(Intent.EXTRA_TITLE, "title");

Intent[] intentArray =  {addIntent }; 
chooser.putExtra(Intent.EXTRA_INITIAL_INTENTS, intentArray);
startActivity(chooser);

但删除特定项目是不可能的。因此,您可以使用Packagemanager.resolveActivity解决意图并创建自己的自定义列表视图

于 2012-08-24T12:16:31.333 回答
3

我使用以下代码获取设备上安装的所有电子邮件和 SMS 应用程序的列表:

Intent shareSMS = new Intent(Intent.ACTION_SENDTO, Uri.fromParts("smsto", "12346556", null));
shareSMS.addCategory(Intent.CATEGORY_DEFAULT);
shareSMS.putExtra("sms_body", message);

Intent shareEmail = new Intent(Intent.ACTION_SENDTO, Uri.fromParts("mailto", "", null));
PackageManager pm = getPackageManager();
List<ResolveInfo> mailActivityList = pm.queryIntentActivities(shareEmail, PackageManager.MATCH_DEFAULT_ONLY);

List<Intent> mailIntents = new ArrayList<Intent>();
for (ResolveInfo resInfo : mailActivityList) {
    Intent targetedOpenIntent = new Intent(android.content.Intent.ACTION_SENDTO, Uri.fromParts("mailto", "", null))
            .setPackage(resInfo.activityInfo.packageName)
            .putExtra(Intent.EXTRA_EMAIL, emails)
            .putExtra(Intent.EXTRA_SUBJECT, subject)
            .putExtra(Intent.EXTRA_TEXT, message);
    mailIntents.add(targetedOpenIntent);
}

Intent chooser = new Intent(Intent.ACTION_CHOOSER);
chooser.putExtra(Intent.EXTRA_INTENT, shareSMS);
chooser.putExtra(Intent.EXTRA_TITLE, "Send request");
chooser.putExtra(Intent.EXTRA_INITIAL_INTENTS, mailIntents.toArray(new Parcelable[] { }));

startActivity(chooser);
于 2014-05-09T07:39:48.893 回答
0

向选择器添加选项

            Intent share = new Intent(Intent.ACTION_SEND);
            share.setType("text/plain");       
            share.putExtra(Intent.EXTRA_TEXT, message);

            Intent extraOptionToAdd = new Intent(this, ExtraOptionActivity.class);
            extraOptionToAdd.putExtra(Intent.EXTRA_TEXT, "Text");
            LabeledIntent labeledExtraOption = new LabeledIntent(extraOptionToAdd, getPackageName(), "Extra Option!", 0);

            Intent chooser = Intent.createChooser(share, "Share Now!");
            Intent[] intentArray =  {labeledExtraOption};
            chooser.putExtra(Intent.EXTRA_INITIAL_INTENTS, intentArray);
            startActivity(chooser);
于 2021-05-21T07:03:28.390 回答