前端文章收集

Android 通过URL scheme 启动App

2017-04-10  本文已影响6159人  beforenight

Android 通过URL scheme 启动App


简述:Android 通过URL scheme 实现点击浏览器中的URL链接,启动特定的App,并调转页面传递参数。


Step 0:

关于页面内容格式如下:

<a href="[scheme]://[host]/[path]?[query]">启动应用程序</a>

各个项目含义如下所示:

Step 1:

在Android端定义Url启动格式,在AndroidManifest.xml文件中,指定需要进行启动的Activity页面,一般是app启动的主页面。

示例:

 <application
            android:allowBackup="true"
            android:icon="@mipmap/ic_launcher"
            android:label="@string/app_name"
            android:roundIcon="@mipmap/ic_launcher_round"
            android:supportsRtl="true"
            android:theme="@style/AppTheme">
        <activity
                android:name=".MainActivity"
                android:label="@string/app_name">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>

            <!--通过浏览器Url启动app-->
            <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:host="lolita"
                        android:scheme="night" />
                <!--<a href="[scheme]://[host]/[path]?[query]">启动应用程序</a>-->
            </intent-filter>
        </activity>
    </application>

Step 2:

定义一个HTML文件 start.html

   <!DOCTYPE html>
    <html>
    
        <head>
            <meta charset="UTF-8">
            <title></title>
        </head>
    
        <body>
            <br/>
            <!--<a href="[scheme]://[host]/[path]?[query]">启动应用程序</a>-->
            <a href="night://lolita?name=Tomcat&page=27">打开app</a><br/>
    
    </html>

Step 3:

如何获取url调整传递过来的数据?

在Activity中需要取值的地方添加以下代码:

Intent intent = getIntent();
if (intent != null)
{
String intentAction = intent.getAction();
if (Intent.ACTION_VIEW.equals(intentAction))
{
Uri intentData = intent.getData();
String name = intentData.getQueryParameter("name");
String page = intentData.getQueryParameter("page");
Log.e(TAG, "initIntentData: " + name);
Log.e(TAG, "initIntentData: " + page);

运行结果:

输出log

参考网址:

1:http://stackoverflow.com/questions/3469908/make-a-link-in-the-android-browser-start-up-my-app/3472228#3472228

2:http://stackoverflow.com/questions/2958701/launch-custom-android-application-from-android-browser

上一篇下一篇

猜你喜欢

热点阅读