我可以用意图打开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中放入多个文件?我认为,问题将得到解决。
对不起我的英文......
答案 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
}