我使用此代码开始使用官方Twitter应用程序在Twitter上发布:

    Intent twitterIntent = new Intent(Intent.ACTION_VIEW); //Intent.ACTION_VIEW
    twitterIntent.setAction("android.intent.action.SEND");
    twitterIntent.setFlags(0x3000000);
    twitterIntent.setType("text/plain");
    twitterIntent.setClassName("com.twitter.android", "com.twitter.android.PostActivity");
    twitterIntent.putExtra(Intent.EXTRA_TEXT, ("Random post"));
    startActivity(twitterIntent);

在将其用于以下用途之前,我还检查此意图是否可用:
public static boolean canReceiveIntent (Intent intent, Context c) {

    PackageManager packageManager = c.getPackageManager();
    List<ResolveInfo> activities = packageManager.queryIntentActivities(intent, 0);
    boolean isIntentSafe = activities.size() > 0;

    return isIntentSafe;
}

它工作正常,但Twitter应用程序在发布推文(在feed上)后仍保持打开状态。我也尝试过使用startActivityForresult(),但它因错误而崩溃:
java.lang.RuntimeException: android.util.AndroidRuntimeException: FORWARD_RESULT_FLAG used while also requesting a result

发布推特后如何返回我的应用程序?

最佳答案

imo官方twitter应用程序并没有尊重android的意图生命周期,而是在action-view或action-send-intent通过startactivityforresult方法调用接收后自行完成,而是保持打开状态,并打破了任何向其发送此类意图的应用程序的体验。

10-07 19:17
查看更多