답변:
카테고리의 android.intent.action.VIEW 사용 android.intent.category.BROWSABLE을 .
Romain Guy의 Photostream 앱의 AndroidManifest.xml 에서
<activity
android:name=".PhotostreamActivity"
android:label="@string/application_name">
<!-- ... -->
<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="http"
android:host="flickr.com"
android:pathPrefix="/photos/" />
<data android:scheme="http"
android:host="www.flickr.com"
android:pathPrefix="/photos/" />
</intent-filter>
</activity>
활동 에 들어가면 작업을 찾은 다음 전달받은 URL로 작업을 수행해야합니다. 이 Intent.getData()
방법은 Uri를 제공합니다.
final Intent intent = getIntent();
final String action = intent.getAction();
if (Intent.ACTION_VIEW.equals(action)) {
final List<String> segments = intent.getData().getPathSegments();
if (segments.size() > 1) {
mUsername = segments.get(1);
}
}
그러나이 앱이 약간 오래된 버전 (1.2)이므로이를 달성하는 더 좋은 방법이있을 수 있습니다.
URL에서 자동으로 매개 변수를 구문 분석하는 라이브러리가 있습니다.
같은
https://github.com/airbnb/DeepLinkDispatch
&&
https://github.com/mzule/ActivityRouter
나중은 내가 쓴 것입니다. 매개 변수를 주어진 유형으로 구문 분석 할 수 있지만 항상 문자열은 아닙니다.
예
@Router(value = "main/:id" intExtra = "id")
...
int id = getIntent().getInt("id", 0);
private class MyWebViewClient extends WebViewClient {
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
setUrlparams(url);
if (url.indexOf("pattern") != -1) {
// do something
return false;
} else {
view.loadUrl(url);
}
return true;
}
}