欢迎来到 Android人的问与答 ,在这里提问或帮助他人解答。 Question2Answer的1.6.x和1.7.x版本的中文翻译包我修改更新:

Question2answer

如何使用中文语言包

Q2A 1.6.x - Chinese Simplified (简体中文)

Q2A 1.7.x - Chinese Simplified (简体中文)


国内服务器推荐 阿里云服务器
国外服务器推荐 DigitalOcean
VPN推荐 正版Green VPN
阿里云推荐码:ldvq50

如何从Android的浏览器(或者通过uri)启动一个应用程序(或应用程序界面)

0 喜欢 0 不喜欢
93 浏览
在manifest中Activity声明时,使用 <intent-filter>和 <data> 组合实现。例如:

你要处理所有androidren.com的链接,那么在你的AndroidManifest.xml中,对应的<activity>标记内添加:

<intent-filter>
    <data android:scheme="http" android:host="androidren.com"/>
    <action android:name="android.intent.action.VIEW" />
</intent-filter>

然后,当用户在浏览器中点击链接到androidren.com的链接时,浏览器会和Intent启动一个Activity时一样处理,如果唯一就跳转,不唯一则让用户选择。
当然,如果你想唯一的定点到你的应用,那么你可以定义自己的scheme。如:
<intent-filter>
    <data android:scheme="my.special.scheme" />
    <action android:name="android.intent.action.VIEW" />
</intent-filter>

然后,你在你的网页中添加链接:<a href="my.special.scheme://other/parameters/here">。那么当用户点击它的时候,你的应用程序就会被调起(你是唯一能处理这个uri的应用)。唯一的缺点是当用户没有安装你这个应用时,如果浏览器又没有处理这种情况,那么后果就不言而喻了。

 

那么应用程序收到uri后,怎么处理呢?应用程序可以使用getIntent().getData()来获取Uri对象。然后使用Uri.* 方法提取你需要的数据。例如:假如用户点击链接:http://androidren.com/qa/1234,那么可以像下面处理。

Uri data = getIntent().getData();
String scheme = data.getScheme(); // "http"
String host = data.getHost(); // "androidren.com"
List<String> params = data.getPathSegments();
String first = params.get(0); // "qa"
String second = params.get(1); // "1234"

上面的代码只要加到对应的Activity中即可。你还可以使用params.size()获取uri中分割出来的段路径。详细的可以看考javadoc或android developer网站中关于Uri的使用描述。
最新提问 12月 31, 2014 分类:Android 小技巧 | 用户: forlong401 (7,050 分)

登录 或者 注册 后回答这个问题。

...