jam*_*esh 105 android url-interception intentfilter android-intent
我希望能够在用户点击给定模式的URL而不是允许浏览器打开它时提示我的应用程序打开链接.这可能是当用户在浏览器或电子邮件客户端中的网页上或在新鲜应用中的WebView中时.
例如,从手机中的任意位置点击YouTube链接,您就有机会打开YouTube应用.
我如何为自己的应用程序实现此目的?
jam*_*esh 140
使用类别android.intent.category.BROWSABLE的android.intent.action.VIEW.
来自Romain Guy的Photostream应用程序的AndroidManifest.xml,
<activity
android:name=".PhotostreamActivity"
android:label="@string/application_name">
<!-- ... -->
<intent-filter>
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.DEFAULT" />
<category android:name="android.intent.category.BROWSABLE" />
<data android:scheme="http"
android:host="flickr.com"
android:pathPrefix="/photos/" />
<data android:scheme="http"
android:host="www.flickr.com"
android:pathPrefix="/photos/" />
</intent-filter>
</activity>
Run Code Online (Sandbox Code Playgroud)
进入活动后,您需要查找操作,然后使用您已经提交的URL执行操作.该Intent.getData()方法为您提供了一个Uri.
final Intent intent = getIntent();
final String action = intent.getAction();
if (Intent.ACTION_VIEW.equals(action)) {
final List<String> segments = intent.getData().getPathSegments();
if (segments.size() > 1) {
mUsername = segments.get(1);
}
}
Run Code Online (Sandbox Code Playgroud)
然而,应该注意的是,这个应用程序有点过时(1.2),所以你可能会发现有更好的方法来实现这一点.
| 归档时间: |
|
| 查看次数: |
59657 次 |
| 最近记录: |