Twitter: comment partager seulement par Tweet ou Message Direct?

j'ai besoin de partager une image via seulement Tweet.

Voici mon code

Intent shareIntent = new Intent(Intent.ACTION_SEND);
        shareIntent.setType("image/*");
        if (mInsertableToGallery) {
            mInsertableToGallery = false;
            mInsertedImagePath = MediaStore.Images.Media.insertImage(getContentResolver(), mShareImage,
                    getResources().getString(R.string.app_name) + System.currentTimeMillis(), getResources().getString(R.string.app_name));
        }
        // share only 5 specific apps:
        List<Intent> targetedShareIntents = new ArrayList<>();
        List<ResolveInfo> resInfos = getPackageManager().queryIntentActivities(shareIntent, 0);
        if (!resInfos.isEmpty()) {
            for (ResolveInfo resolveInfo : resInfos) {
                String packageName = resolveInfo.activityInfo.packageName;
                Intent targetedShareIntent = new Intent(Intent.ACTION_SEND);
                targetedShareIntent.setType("image/*");
                targetedShareIntent.setPackage(packageName);
                targetedShareIntent.putExtra(Intent.EXTRA_STREAM, Uri.parse(mInsertedImagePath));
                if (TextUtils.equals(packageName, "com.facebook.katana") //fb
                ||TextUtils.equals(packageName, "com.instagram.android") //instagram
                ||TextUtils.equals(packageName, "jp.naver.line.android") //line
                ||TextUtils.equals(packageName, "com.google.android.apps.plus") // plus
                ||TextUtils.equals(packageName, "com.twitter.android")) // twitter
            {
                targetedShareIntents.add(targetedShareIntent);
            }

            }
        }
        Intent chooser = Intent.createChooser(targetedShareIntents.remove(0), "");
        chooser.putExtra(Intent.EXTRA_INITIAL_INTENTS, targetedShareIntents.toArray(new Parcelable[]{}));
        startActivity(chooser);

et j'obtiens le résultat: share only via 5 apps

lorsque vous cliquez sur "Android System", Twitter Partager popup: share Twitter

Ce que je veux:

  1. Message ?

  2. Comment changer le titre et icône de la part de l'élément. Ex Twitter article de partage de "système Android" à "Tweet"?

5
demandé sur m.s. 2015-10-20 13:16:50

2 réponses

Je n'ai pas réussi à obtenir à la fois Tweet et Message Direct à l'avant, mais le code suivant vous obtiendra l'un ou l'autre là. En fait, vous pouvez obtenir les deux à l'avant, mais les deux apparaît avec le même nom "Tweet" de sorte que son genre de inutilisable. J'ai également inclus facebook, insta et tumblr. Pour obtenir un Message Direct à la place de tweet, remplacer com.twitter.android.composer.ComposerActivity par com.twitter.android.DMActivity . Pour obtenir les deux Ajouter un autre " si " pour DMActivity.

ne peut pas dire surement mais je ne pense pas que vous pouvez changer le Icône du paquet pour votre application.

List<Intent> targetedShareIntents = new ArrayList<Intent>();
        Intent shareIntent = new Intent(android.content.Intent.ACTION_SEND);
        shareIntent.setType("image/jpeg");//("text/plain");
        Uri uri = Uri.fromFile(outFile);
        shareIntent.putExtra(Intent.EXTRA_STREAM, uri);
        List<ResolveInfo> resInfo = getPackageManager().queryIntentActivities(shareIntent, 0);
        for (ResolveInfo resolveInfo : resInfo) {
            String packageName = resolveInfo.activityInfo.packageName;
            Intent targetedShareIntent = new Intent(android.content.Intent.ACTION_SEND);
            targetedShareIntent.setType("image/jpeg");
            targetedShareIntent.putExtra(Intent.EXTRA_STREAM, uri);
            if(TextUtils.equals(packageName,"com.facebook.katana")|TextUtils.equals(packageName,"com.instagram.android")
                    |TextUtils.equals(packageName,"com.tumblr")) {
                targetedShareIntent.setPackage(packageName);
                targetedShareIntents.add(targetedShareIntent);
            }
            if(TextUtils.equals(resolveInfo.activityInfo.name,"com.twitter.android.composer.ComposerActivity")) {
                targetedShareIntent.setPackage(packageName);
                targetedShareIntent.setClassName(
                        resolveInfo.activityInfo.packageName,
                        resolveInfo.activityInfo.name);
                targetedShareIntents.add(targetedShareIntent);
            }
        }
        Intent chooserIntent = Intent.createChooser(targetedShareIntents.remove(0), "Select app to share");
        chooserIntent.putExtra(Intent.EXTRA_INITIAL_INTENTS, targetedShareIntents.toArray(new Parcelable[]{}));
        startActivity(chooserIntent);
4
répondu Deepak Soni 2016-01-06 06:58:48

pour composer un nouveau Tweet:

public static Intent getTwitterShareIntent(Context context) {
    Intent shareIntent = new Intent(Intent.ACTION_SEND);
    shareIntent.setType("text/plain");
    shareIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
    shareIntent.setClassName("com.twitter.android",
            "com.twitter.composer.ComposerShareActivity");
    return shareIntent;
}
0
répondu iMobaio 2017-11-07 23:26:25