Android:从Twitter接收隐含意图 - Bundle null

时间:2016-11-19 05:26:33

标签: android android-intent twitter intentfilter android-implicit-intent

我一直在尝试通过Twitter分享Tweet并从选择器中选择我的应用程序,在我的Android应用程序中接收推文URL或推文ID。

我已经设置了一个意图过滤器,可以在共享推文时成功使我的应用可用。

的AndroidManifest.xml

<intent-filter>
    <data android:host="twitter.com" 
          android:scheme="http" />
    <category android:name="android.intent.category.DEFAULT" />
    <action android:name="android.intent.action.SEND" />
</intent-filter>

分享推文导致我的活动被调用,但是Intent似乎没有承载Intent过滤器的属性,这使得我的应用程序可用于Twitter的Share Chooser。

我试图在onResume中捕获它,如下所示:

@Override
public void onResume() {
    super.onResume();

        Intent mIntent = getIntent();

        String action = mIntent.getAction();
        String type = mIntent.getType();p 
        Bundle mBundle = mIntent.getExtras();
        Uri data = mIntent.getData();

        Set<String> mCategories = mIntent.getCategories();

        if (mCategories != null) {

            for (String cat : mCategories) {
                Log.d(TAG + "Intent Category: ", cat);
            }

        }

        try {
            URL url = new URL(data.getScheme(), data.getHost(), data.getPath());
        } catch (Exception e) {
            e.printStackTrace();
            Log.d(TAG,"Error getting intent from Twitter");
        }
    }
}

mIntent中只有一个类别,即android.intent.category.LAUNCHER。

,动作是android.intent.action.MAIN

mIntent.getExtras()和mIntent.getData()返回null,我无法构建网址。

我很困惑,因为它是在我的第一个代码节中添加了过滤器,在Manifest中,这导致我的应用程序可供Twitter的共享选择器使用,但这个意图似乎被忽略了。

我是否错误地设置了过滤器,还是有其他我可能错过的东西?

修改

或许,我是否需要设置我的活动以设置多个意图?

为了尝试这样做,我设置了各种不同的意图过滤器,但它们似乎都没有捕获任何意图(除了总是被调用的MAIN / LAUNCHER意图)。

我还尝试为onActivityResult添加工作流程,但这似乎是多余的,因为我总是使用该方法处理意图是从我自己的应用程序发送的。

更新 Hadn没有时间完成此工作,但我很快就会再次查看。

0 个答案:

没有答案