通过Intent与twitter共享多个图像

时间:2014-05-21 13:51:42

标签: android android-intent twitter

我可以用意图打开twitter(官方客户端,我不会与其他客户端探测),我可以共享图像...只有一个图像

但是在这个时刻推特可能会在推文中发布更多图片(最多= 4)。

这是我的代码:

public void twitter_intent() {
    Intent i = findTwitterClient();
    File file1 = new File(Environment.getExternalStorageDirectory() + File.separator + "photo1.png"); 
    File file2 = new File(Environment.getExternalStorageDirectory() + File.separator + "photo2.png"); 

    String mensaje = cxt.getResources().getString(R.string.promocionar_twitter_mensaje, 
            cxt.getResources().getString(R.string.network_URL_MYWEB));


    if (file1.exists())
        i.putExtra(Intent.EXTRA_STREAM, Uri.fromFile(file1));
    if (file2.exists())
        i.putExtra(Intent.EXTRA_STREAM, Uri.fromFile(file2));
    i.putExtra(Intent.EXTRA_TEXT, mensaje);



    i.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);



    cxt.startActivity(i);
}

private Intent findTwitterClient() {
    final String[] twitterApps = {
            // package // name - nb installs (thousands)
            "com.twitter.android", // official - 10 000
            "com.twidroid", // twidroyd - 5 000
            "com.handmark.tweetcaster", // Tweecaster - 5 000
            "com.thedeck.android" // TweetDeck - 5 000 
            };
    Intent tweetIntent = new Intent(Intent.ACTION_SEND);
    tweetIntent.setType("image/png");
    final PackageManager packageManager = cxt.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;
}

第二个文件(photo2)覆盖第一个文件。

如何在一个URI中放入多个文件?我认为,问题将得到解决。

对不起我的英文......

1 个答案:

答案 0 :(得分:0)

这样就可以了。

Intent tweetIntent = new Intent(Intent.ACTION_SEND);
            tweetIntent.setType("text/plain");
            tweetIntent.putExtra(Intent.EXTRA_SUBJECT, "tweet");
            tweetIntent.putExtra(Intent.EXTRA_TEXT, "sample tweet");

            PackageManager pm = activity.getPackageManager();
            List<ResolveInfo> lract = pm.queryIntentActivities(tweetIntent, PackageManager.MATCH_DEFAULT_ONLY);
            boolean resolved = false;
            for (ResolveInfo ri : lract) {
                if (ri.activityInfo.name.contains("twitter")) {
                    tweetIntent.setClassName(ri.activityInfo.packageName,
                            ri.activityInfo.name);
                    resolved = true;
                    break;
                }
            }
            if(resolved){
                activity.startActivity(tweetIntent);
            }else{
                // do something
            }