Android 将URL与不起作用的意图相匹配
我正在编写一个伴随着网站的Android应用程序,我想让该应用程序拦截某些URL。我通过谷歌等网站找到了多个例子,但都不管用。我创造了我的意图:Android 将URL与不起作用的意图相匹配,android,android-intent,Android,Android Intent,我正在编写一个伴随着网站的Android应用程序,我想让该应用程序拦截某些URL。我通过谷歌等网站找到了多个例子,但都不管用。我创造了我的意图: Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse("http://xgn.nl/article/" + String.valueOf(id))); 然后从另一个活动启动它(我是上面的意图) 应接收此信息的活动的意图筛选器为: <activity android:name=".Art
Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse("http://xgn.nl/article/" + String.valueOf(id)));
然后从另一个活动启动它(我是上面的意图)
应接收此信息的活动的意图筛选器为:
<activity android:name=".ArticleActivity" android:theme="@style/XGN.Red">
<intent-filter>
<action android:name="android.intent.action.VIEW" />
<data android:scheme="http" android:host="xgn.nl" android:pathPrefix="/article/" android:mimeType="text/*" />
<category android:name="android.intent.category.DEFAULT" />
<category android:name="android.intent.category.BROWSABLE" />
</intent-filter>
</activity>
我还尝试了在过滤器中没有mimeType的情况下使用它。意图解析程序看到筛选器,但抱怨数据与意图中的数据不匹配,并启动浏览器
我做错了什么?我在发布它5秒钟后就解决了它,问题是您需要指定完全限定的类名才能使它工作:)
编辑:更准确地说,我在logcat中看到的错误是错误的。数据类型确实匹配,但它选择了更可见的浏览器类,而不是延迟定义的活动。指定完整的类名并删除mimeType使这项工作成功。您能发布您收到的错误吗?我指的是:“意图解析程序看到筛选器,但抱怨数据与意图中的数据不匹配”。抱歉,我回去进行了更多的调试,实际上发现了:)你可以通过一个标志打开IntentResolver调试输出,这在logcat中显示它认为数据不匹配应该是android:pathPrefix=“article”,但我不知道这是否是问题所在……那么,你已经解决了吗?太好了!:)
<activity android:name=".ArticleActivity" android:theme="@style/XGN.Red">
<intent-filter>
<action android:name="android.intent.action.VIEW" />
<data android:scheme="http" android:host="xgn.nl" android:pathPrefix="/article/" android:mimeType="text/*" />
<category android:name="android.intent.category.DEFAULT" />
<category android:name="android.intent.category.BROWSABLE" />
</intent-filter>
</activity>
<activity android:name="nl.xgn.ArticleActivity" android:theme="@style/XGN.Red">
<intent-filter>
<action android:name="android.intent.action.VIEW" />
<data android:scheme="http" android:host="xgn.nl" android:pathPrefix="/article/" />
<category android:name="android.intent.category.DEFAULT" />
<category android:name="android.intent.category.BROWSABLE" />
</intent-filter>
</activity>