Android 從外部網頁拉起跳轉到App

小呂-ICE發表於2015-10-12

業務場景

當需要從外部第三方網頁中通過點選某個連結或按鈕啟動App應用程式。

實現

  • 新建demo工程,並實現一個Activity,用來接收從外部跳轉傳入的資訊。程式碼如下:
    public class MainActivity extends Activity {

    private TextView tv_content;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        tv_content = (TextView)findViewById(R.id.tv_content);

        Intent intent = getIntent();
        if (intent != null){
            Uri uri = intent.getData();

            if (uri != null){
                String dataString = intent.getDataString();
                String scheme = uri.getScheme();
                String host = uri.getHost();
                String query = uri.getQuery();

                tv_content.setText("dataString = " + dataString + " | scheme = " + scheme + " | host = " + host + " | query = " + query);
            }
        }
    }
  • 修改AndroidManifest檔案,設定Activity的接收Action的屬性:
<application
        android:allowBackup="true"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        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>

            <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:scheme="ice"
                      android:host="start.app"/>

            </intent-filter>
        </activity>
</application>

如上所示,在data裡設定了 scheme和host,則該Activity可以接收和處理類似於 “ice://start.app/XXX”的連結。

  • 接下來 就是要模擬一個第三方網頁環境用於啟動我們的app應用,我們可以新建一個包含WebView的工程2,用webview載入我們的測試html,html網頁程式碼如下:
<html>

<head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    <title>title</title>
</head>

<body>
<a href="ice://start.app/test?type=1&value=2">開啟app</a><br/>
</body>

</html>
  • 執行工程2,效果如下:
    這裡寫圖片描述

點選連結“開啟app”,會啟動demo應用,且demo應用接收到了網頁傳過來的引數資訊,效果如下:
這裡寫圖片描述

相關文章