<activity android:name=".MyActivity"> <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="myapp" android:host="path" android:pathPrefix="/pathPrefix_1/pathPrefix_2/" /> </intent-filter> </activity>在AndroidManifest.xml裡想要跳轉的那一頁(Activity),
裡面加上2~8行的<intent-filter>
就可以從網頁,或者網址Url直接連到自己的app。
三到六行,主要是讓app能夠被看被打開,
比較重要的是第六行:
<data android:scheme="myapp" android:host="path" android:pathPrefix="/pathPrefix_1/pathPrefix_2/" />點下或輸入網址 myapp://path/pathPrefix_1/pathPrefix_2/ 就可以連到app中MyActivity.java那一頁,
myapp://path/pathPrefix_1/pathPrefix_2/blablabla 也可以,
myapp://path/pathPrefix_1/pathPrefix_2/?user=abc 也可以,
後面的字串或query參數需要的話,在程式中可以自行parse。
android:pathPrefix這個參數是不一定需要的,多長可以自己定義。
如果只給
android:scheme="myapp" android:host="path"則 myapp://path 或 myapp://path/ 或 myapp://path/blablabla 都連得到,
但 myapp://path.bla 就連不到。
用這樣的方式進入Activity,會收到intent,
而parse方式如下:
get url data:
ex: myapp://path.com/pathPrefix/1234
Uri data = getIntent().getData(); String scheme = data.getScheme(); // "myapp" String host = data.getHost(); // "path.com" Listparams = data.getPathSegments(); String first = params.get(0); // "pathPrefix" String second = params.get(1); // "1234"
要注意的是,
如果想拿到不只是網址,還包括參數(queryString)
就要使用
String data = intent.getDataString()而非
Uri data = getIntent().getData();然後自行parse。
沒有留言:
張貼留言