【问题标题】:Sharing data with custom list of intent display an Android System与自定义意图列表共享数据显示 Android 系统
【发布时间】:2016-06-06 14:32:39
【问题描述】:

我尝试仅通过 facebook、twitter 和 g+ 共享一些数据,因此我创建了一个自定义的意图列表,我可以发送一些文本,一切正常。 但我在推特上遇到了显示问题,见下文

你可以看到这个 Systeme Android,如果我点击它,我会得到这个:

查看代码:

在第一个函数中,我只是放置了我想使用的包

private List<String> getShareApplication(){
    List<String> mList=new ArrayList<>();
    mList.add("com.facebook.katana");
    mList.add("com.google.android.apps.plus");
    mList.add("com.twitter.android");
    return mList;
}

在这个我使用上面的列表,如果包存在于我的手机上,我会查看循环,我创建一个带有 ACTION_SEND 的 Intent 调用targetedShare 并在其中放入一些文本,最后将它添加到targetShareIntents 列表

 private void Share(List<String> PackageName) {
            List<Intent> targetedShareIntents = new ArrayList<>();
            Intent share = new Intent(android.content.Intent.ACTION_SEND);
            share.setType("text/plain");
            List<ResolveInfo> resInfo = context.getPackageManager().queryIntentActivities(share, 0);
            if (!resInfo.isEmpty()){
                for (ResolveInfo info : resInfo) {
                    Intent targetedShare = new Intent(android.content.Intent.ACTION_SEND);
                    if (PackageName.contains(info.activityInfo.packageName.toLowerCase())) {
                        targetedShare.setType("text/plain");
                        targetedShare.putExtra(Intent.EXTRA_TEXT, String.valueOf(urlJson));
                        targetedShare.setPackage(info.activityInfo.packageName.toLowerCase());
                        targetedShareIntents.add(targetedShare);
                    }
                }
                Intent chooserIntent = Intent.createChooser(targetedShareIntents.remove(0), "Share");
                chooserIntent.putExtra(Intent.EXTRA_INITIAL_INTENTS, targetedShareIntents.toArray(new Parcelable[targetedShareIntents.size()]));
                startActivity(chooserIntent);
            }
        }
    }

我尝试使用在 stackOverflow 上找到的其他代码,并尝试使用其他设备,并尝试使用其他一些 twitter 包名称,例如:

com.twitter.android.composer.ComposerActivity

com.twitter.android.DMActivity

com.twitter.android.PostActivity

等等……

但我还是遇到了这个问题

【问题讨论】:

    标签: android android-intent twitter share social-networking


    【解决方案1】:

    如果有人遇到此问题,我找到了解决方案,您需要使用此功能在 Intent 列表中单独添加 twitter:

    public Intent findTwitterClient() {
        final String[] twitterApps = {
                "com.twitter.android",
                "com.twidroid",
                "com.handmark.tweetcaster",
                "com.thedeck.android" };
        Intent tweetIntent = new Intent();
        tweetIntent.setType("text/plain");
        final PackageManager packageManager = getPackageManager();
        List<ResolveInfo> list = packageManager.queryIntentActivities(
                tweetIntent, PackageManager.MATCH_DEFAULT_ONLY);
        for (int i = 0; i < twitterApps.length; i++) {
            for (ResolveInfo resolveInfo : list) {
                String p = resolveInfo.activityInfo.packageName;
                if (p != null && p.startsWith(twitterApps[i])) {
                    tweetIntent.setPackage(p);
                    return tweetIntent;
                }
            }
        }
        return null;
    }
    

    你可以像这样使用它: targetShareIntents.add(findTwitterClient());

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2023-04-03
      • 2013-08-25
      • 2011-04-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多