WebView中运用HTML打开本地应用

WebView中使用HTML打开本地应用

最近在做一个Android项目,其中有个需求是在WebView中使用HTML打开

本地应用,本来如果WebView是自己项目的话,那很简单,如下所示:


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页面地址,咋办呢?

突然想到可以将自己的应用加入到系统的分享列表里,那么同样道理就可以去利用系统打开链接时

的表现来做文章,因为不管是哪一个都只是一个系统定义的动作而已。


于是做了如下尝试

在manifest中为自己应用中的特定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中添加一个超链接

<a href="http://path">点击打开程序</a>

可是出现的效果并没有达到自己想要的那样


就像图中的那样,它并没有直接打开我的应用WallPaperDemo,而是出现在列表中,

不过它确实也应该是这样表现的,当点击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">点击打开程序</a>

终于达到目的了,在其他应用中点击链接即可把自己的应用打开


转自-----http://www.myexception.cn/web/582162.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值