Android分享意图Twitter:如何仅通过推文或直接消息分享?

Cuo*_*yen 5 twitter android share android-intent

我只需通过Tweet分享图片.

这是我的代码

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);
Run Code Online (Sandbox Code Playgroud)

我得到了结果: 仅通过5个应用分享

点击"Android系统",Twitter分享弹出窗口: 分享Twitter

我想要的是:

  1. 如何通过推特或直接消息通过Twitter分享?

  2. 如何更改共享项的标题和图标.Ex Twitter分享项目从"Android系统"到"推特"?

Dee*_*oni 4

我无法将推文和私信都放在前面,但下面的代码可以让你其中之一到达前面。实际上,您可以将两者都放在前面,但两者都以相同的名称“Tweet”出现,因此它无法使用。我还加入了 facebook、insta 和 tumblr。要使用直接消息代替推文,请将其替换com.twitter.android.composer.ComposerActivitycom.twitter.android.DMActivity。要获得两者,请为 DMActivity 添加另一个“if”。

不能肯定地说,但我认为您不能更改应用程序包的图标。

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);
Run Code Online (Sandbox Code Playgroud)