1. 程式人生 > >android:scheme 通過uri跳轉到APP應用指定Activity

android:scheme 通過uri跳轉到APP應用指定Activity

最近公司有個需求,點選第三方APP或者APP內的H5頁面然後直接跳轉到APP裡面,比如瀏覽器開啟一個H5頁面,然後點選某個連結就直接到APP的某個指定的Activity,經過研究發現實現還是蠻easy的,下面說下方法吧。

首先,在AndroidManifest.xml裡面進行配置,在對應的Activity加上一個intent-filter, 如下:

<application
        android:icon="@drawable/ic_launcher"
        android:label="@string/app_name"
        android:theme="@style/AppTheme" >
        <activity
            android:name=".MainActivity"
            android:label="@string/title_activity_main" >
            <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="paraches" />
            </intent-filter>
            </activity>
    </application>


接下來在對應的這個Activity加上相關解析程式碼,如下:

@Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        Intent intent = getIntent();
        String action = intent.getAction();
        if (Intent.ACTION_VIEW.equals(action)) {
        	Uri uri = intent.getData();
        	if (uri != null) {
                String host = uri.getHost();
                String dataString = intent.getDataString();
                String id = uri.getQueryParameter("id");
                String path = uri.getPath();
                String path1 = uri.getEncodedPath();
                String queryString = uri.getQuery();
                Log.d("Alex", "host:"+host);
                Log.d("Alex", "dataString:" + dataString);
                Log.d("Alex", "id:" + id);
                Log.d("Alex", "path:" + path);
                Log.d("Alex", "path1:" + path1);
                Log.d("Alex", "queryString:" + queryString);
            }
        }
    }


看下Log情況,如下:

host:schemedemo
dataString:paraches://schemedemo/get/info?id=10000
id:10000
path:/get/info
path1:/get/info
queryString:id=10000

經過以上步驟就可以在第三方APP開啟自己想要的APP指定頁面了,是不是很easy啊,再說下應用內點選連結也可以開啟,需要如下程式碼:

if (url.startsWith("paraches")) {
    Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(url));
    startActivity(intent);
    finish();
                    
}   


簡單網頁如下,這個網頁可以用瀏覽器開啟,然後點選跳轉連結:

<a href="paraches://schemedemo/get/info?id=10000">open android app</a>

也可以不要域名和路徑,寫成

<a href="paraches://?id=10000">open android app</a>

paraches:自定義的scheme,想叫任何名字都可以,只要activity註冊那裡和網頁連結一致就行

不過我相信可能還是有小夥伴會迷路,這裡上傳一下專案demo,這個網頁就自己建立了,我就不上傳了,連結如下:

http://download.csdn.net/download/msn465780/10234615

下載地址