android:scheme 通過uri跳轉到APP應用指定Activity
阿新 • • 發佈:2019-01-30
最近公司有個需求,點選第三方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