Android 通过URL scheme 启动App

转载于:http://www.jianshu.com/p/7d90a6cfb5f3 Android 通过URL scheme 启动App

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


Step 0:

关于页面内容格式如下:

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

各个项目含义如下所示:

  • scheme:判别启动的App。 - 必填项
  • host:适当记述。- 必填项
  • path:传值时必须的key。 - 非必填项
  • query:获取值的Key和Value。 - 非必填项

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
最新回复(0)
/jishuQmN57BxJ8j7DZ_2FrMVzXkvPZvppUSUaGJpZzXwhuuxzo_3D2727447
8 简首页