Android在网页下(WebView中运用HTML)点击按钮打开本地手机应用程序
2014-01-23 10:47
831 查看
Android在网页下(WebView中运用HTML)点击按钮打开本地手机应用程序
最近在做一个Android项目,其中有个需求是在网页中打开本地应用本来如果是自己项目的使用WebView的话,那很简单,如下所示:
点击进入: 品牌服饰鞋包9.9元特价包邮抢购:http://shop109590806.taobao.com/
Java类中在WebView中添加JS调用接口,让JS代码可以调用到Java代码即可:
public class Test extends Activity{ private Handler mHandler = new Handler(); @Override protected void onCreate(Bundle savedInstanceState) { // TODO Auto-generated method stub super.onCreate(savedInstanceState); setContentView(R.layout.test); WebView mView = (WebView)findViewById(R.id.webview); mView.getSettings().setJavaScriptEnabled(true); mView.loadUrl("file:///android_asset/index.html"); mView.addJavascriptInterface(new OpenApp(), "openApp"); } class OpenApp { public void open(final String pkgName) { mHandler.post(new Runnable() { @Override public void run() { // TODO Auto-generated method stub startActivity(getApplicationContext().getPackageManager().getLaunchIntentForPackage(pkgName)); } }); } } }
然后在HTML中的JS代码里使用window.openApp.open(pkgName);即可。
但是坑爹的需求是,这个WebView是别的网页里面,我所能做的只是提供一个HTML页面地址,咋办呢?
突然想到可以将自己的应用加入到系统的分享列表里,那么同样道理就可以去利用系统打开链接时的表现来做文章
因为不管是哪一个都只是一个系统定义的动作而已
于是做了如下尝试
在AndroidManifest.xml中为自己应用中的特定activity配置如下:
<activity android:name=".Test" android:screenOrientation="portrait"> <intent-filter><action android:name="android.intent.action.VIEW"> </action> <category android:name="android.intent.category.DEFAULT"> </category> <category android:name="android.intent.category.BROWSABLE"> </category> <data android:host="path" android:scheme="http"></data> </intent-filter> </activity>
然后在HTML中添加一个超链接或者button
<a href="http://path">openAPP</a>
可是出现的效果并没有达到自己想要的那样
当点击http开头的链接时,系统会把它当作是一个标准的URL
从而把能够处理它的应用全给显示出来了,让你选择使用哪个应用来打开这个链接
那么如何才能直接将自己的应用打开呢?
还是继续这个思路
既然点击链接的时候我们应用可以响应,而且之所以会出现一个列表
那是因为别人也能处理,那么如果这个链接的协议只有我们自己的应用能够处理呢
应该就会直接打开了,ok,做出以下调整
<activity android:name=".Test" android:screenOrientation="portrait"> <intent-filter><action android:name="android.intent.action.VIEW"> </action> <category android:name="android.intent.category.DEFAULT"> </category> <category android:name="android.intent.category.BROWSABLE"> </category> <data android:host="path" android:scheme="myapp"></data> </intent-filter> </activity>
<a href="myapp://path">openAPP</a>
另外一种以JS函数实现方式
<script type="text/javascript"> function openApp() { state = window.open("myapp://path"); } </script>
<a href="javascript:openApp()">openAPP</a>
终于达到目的了,在其他应用中点击链接或者其他网页中使用以上方式即可打开自己的应用
希望对大家有所帮助,有不明白的地方请留言,共同探讨
相关文章推荐
- android webview中如何实现html与手机本地数据的交互
- android webview加载html图片自适应手机屏幕大小&点击查看大图
- Android中WebView在加载网页的时候,怎样应用本地的CSS效果?就是说怎样把本地的CSS嵌入到HTML中
- android 调用js webView网页,点击提交按钮无效(注意加上setWebChromeClient())
- android中自定义WebView显示网页或本地html文件
- Androidwebview加载本地html网页
- Android WebView 远程网页 加载本地资源js/html/css
- ionic 实现 应用内(webview中html页面点击) 和 应用外 (浏览器html页面点击) 打开本地安装应用
- webview中实现当点击网页中的按钮的时候,跳转到本地的activity。
- WebView中运用HTML打开本地应用
- android中自定义WebView显示网页或本地html文件
- android webview加载html图片自适应手机屏幕大小&点击查看大图
- android webview加载html图片自适应手机屏幕大小&点击查看大图
- Android中webview加载的网页上的按钮点击失效
- 在android中,如何去掉webview读取网页后点击网页上的按钮出现的方框
- android使用webView打开本地html文件
- android中webview显示网页、进度条显示进度、上一页、下一页、支持放大缩小、返回按钮2秒两次点击退出应用
- android webview点击返回键返回上一个html
- android之WebView中点击链接使用自身打开
- Android Webview加载外部html时选择加载本地的js,css等资源文件