作者:JackY-小袋鼠 | 来源:互联网 | 2023-05-19 14:36
转载:http:www.eoeandroid.comthread-568674-1-1.html我们知道,AndroidAPP一旦上线之后,如果想要增加一些页面(Activity),通常比较麻
转载:http://www.eoeandroid.com/thread-568674-1-1.html
我们知道,Android APP一旦上线之后,如果想要增加一些页面(Activity),通常比较麻烦,那么,最常见的做法是用网页(HTML5)来实现,在APP中实现一个WebViewActivity,在这个Activity中打开指定的URL。
下面我来描述这样一个场景,在WebViewActivity中打开了一个HTML页面,在这个HTML页面中有一个链接,现在要求点击这个链接打开APP中已经存在的一个Activity(假定为TestActivity),这时你会怎样来做呢?
我们应该记得,启动一个Activity通常是用Intent来启动的,而Intent分为显式意图和隐式意图。
显式意图用的很多,如下:
- Intent intent = new Intent(context, TestActivity.class);
- startActivity(intent);
隐式意图是这样用的:
- Intent i = new Intent(Intent.ACTION_CALL, Uri.parse(“tel:10010”));
- startActivity(i);
我们了解了Intent的这两种用法,那么用什么方案来解决这个问题呢?
本帖隐藏的内容
正好Android SDK 给我们提供了解决方案,在网页中点击某个链接时,会匹配到Activity所配置的隐式Intent(配置在Manifest文件中)。
知道这个我们就好办了。
第一步:在Manifest文件中给TestActivity配置一个隐式Intent
-
-
-
-
-
- android:host="test"
- android:scheme="testapp" />
-
第二步:这时,当在网页中点击链接Start TestActivity就会启动TestActivity了。
那么问题又来了,怎么传递参数到TestActivity中呢?我们知道显式Intent一般是用Intent.putExtra()来实现的,那么隐式Intent该如何实现呢?
同样的,还是通过这个链接传递,只是加上我们要传的参数。这时链接可以这么写:StartTestActivity
我们可以在TestActivity来取得这两个参数:
- Uri uri = getIntent().getData();
- Strinng id = uri.getQueryParameter("id");
- Strinng title = uri.getQueryParameter("title");
这样就完美实现了隐式Intent的参数传递了。
最后提供一个Demo供大家学习: Demo.zip (615.4 KB)