我一直在尝试通过从 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 添加工作流,但这似乎是多余的,因为我一直使用该方法来处理从我自己的应用程序发送的意图。
更新没有时间完成这个工作,但我很快就会再看一遍。