前段时间遇到一个需求:
点击浏览器中的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();
}
}