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 に答える