4

我一直在尝试通过从 Twitter 共享推文并从选择器中选择我的应用程序来在我的 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>

分享推文会导致我的活动被调用,但意图似乎不具备意图过滤器的属性,这使我的应用程序可用于 Twitter 的共享选择器。

我试图在 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里面只有一个category,就是android.intent.category.LAUNCHER。

并且动作是 android.intent.action.MAIN

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

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

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

编辑

我是否需要设置我的活动来设置多个意图?

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

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

更新没有时间完成这个工作,但我很快就会再看一遍。

4

0 回答 0