如果安装在手机上,我试图通过原生Twitter应用分享图片和文字。
如果用户已安装原生Twitter应用程序,请打开原生Twitter应用程序,然后显示toast msg。
请让我知道我可以使用的任何其他解决方案或修改以下解决方案。
我搜索了一些东西并试了一下:
Sol 1
Intent tweetIntent = new Intent(Intent.ACTION_SEND);
tweetIntent.putExtra(Intent.EXTRA_TEXT, "This is a Test.");
tweetIntent.setType("text/plain");
PackageManager packManager = activity.getPackageManager();
List<ResolveInfo> resolvedInfoList = packManager.queryIntentActivities(tweetIntent, PackageManager.MATCH_DEFAULT_ONLY);
boolean resolved = false;
for(ResolveInfo resolveInfo: resolvedInfoList){
if(resolveInfo.activityInfo.packageName.startsWith("com.twitter.android")){
tweetIntent.setClassName(
resolveInfo.activityInfo.packageName,
resolveInfo.activityInfo.name );
resolved = true;
break;
}
}
if(resolved){
activity.startActivity(tweetIntent);
}else{
Toast.makeText(activity, "Twitter app isn't found", Toast.LENGTH_LONG).show();
}
即使我安装了原生的Twitter应用程序,它也无法打开应用程序。
Sol 2
Intent tweet_in_native_app = new Intent(Intent.ACTION_VIEW, Uri.parse("twitter://post?message=hi ...."));
activity.startActivity(tweet_in_native_app);
它只允许发布文字,我也必须发布图片和网址
Sol 3
String originalMessage = "This is just a sample text";
String originalMessageEscaped = null;
try {
originalMessageEscaped = String.format(
"https://twitter.com/intent/tweet?source=webclient&text=%s",
URLEncoder.encode(originalMessage, "UTF-8"));
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
}
if(originalMessageEscaped != null) {
Intent i = new Intent(Intent.ACTION_VIEW);
i.setData(Uri.parse(originalMessageEscaped));
activity.startActivity(i);
}
else {
// Some Error
}
这里它将提示应用程序列表以及浏览器和Twitter,我希望它直接打开应用程序(如果已安装)而不是询问用户。