Android-网页连接打开本地app

前段时间遇到一个需求:  点击浏览器中的URL链接,启动特定的App。
我在自己的小米手机自带的浏览器输入 :tel://123,结果很神奇的跳到了拨打电话的页面并且拨打号码为//123
但是在华为,三星等手机上并没有反映
我查阅了资料之后,找到了解决办法如下
先上一个heml代码规则:

<!--scheme:判别启动的App-->
<!--host:适当记述-->
<!--path:传值时必须的key(没有也可以)-->
<!--query:获取值的Key和Value  ※没有也可以-->
<a href="[scheme]://[host]/[key]?[value]">启动应用程序</a>


完整代码例子如下
<html>
<body>
<a href="myapp://jp.app/openwith?name=YSP&age=99">启动应用程序</a>
</body>
</html>

接下来就到了Android应用端了

<application
    android:allowBackup="true"
    android:icon="@mipmap/ic_launcher"
    android:label="@string/app_name"
    android:supportsRtl="true"
    android:theme="@style/AppTheme">
    <activity android:name=".MainActivity"
        android:theme="@style/Theme.AppCompat.Light.NoActionBar">
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />
            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
        <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="myapp" android:host="jp.app" android:pathPrefix="/openwith"/>
        </intent-filter>
    </activity>
</application>

各位能看出来哪里不同了把,
首先在AndroidManifest.xml的MAIN Activity下追加以下内容。(启动Activity时给予)
        <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="myapp" android:host="jp.app" android:pathPrefix="/openwith"/>
        </intent-filter>

第一次写的时候小编写到了MAIN下,搞的app图标都不见了
所以一定要记住不要犯小编犯过的错误

添加玩这些东西大家可以自己试试Android自带的浏览器,注意*注意*注意这里一直强调是自带的浏览器,其他第三方浏览器可能会失败,具体哪些浏览器会失败自己去试吧

如果想获取网页的参数的可以在启动的页面写代码获取,Key和value,代码如下

Intent i_getvalue = getIntent();
String action = i_getvalue.getAction();
if(Intent.ACTION_VIEW.equals(action)){
    Uri uri = i_getvalue.getData();
    if(uri != null){
        String name = uri.getQueryParameter("name");
        String age= uri.getQueryParameter("age");
        Toast.makeText(MainActivity.this,name+"///"+age,Toast.LENGTH_LONG).show();
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值