모바일 브라으저 링크를 안드로이드웹뷰에서 열고자 합니다.
본문
아래와 같은 링크가 브라우저상에 있다고 가정하겠습니다.
링크를 클릭했을때, 보고있는 브라우저가 열리는것이 아닌 설치되어있는 안드로이드웹뷰 abc 앱에서 페이지가 열리게 하려면 어떻게 처리해야 할는지요?
<a href="http://abc.com/member/register.html"> 메인화면 바로가기 </a>
딥링크라는것을 검색해서 안드로이드 매니페스트에서 아래와 같이 정의한후 모바일 웹링크를
<a href="abc://move"> 메인화면 바로가기 </a>
이런식으로 해주면 abc 앱이 열리기는 하는데 이후 특정페이지로 ("member/register.html") 이동을 어떻게 처리해야 할는지 모르겠습니다.
<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:host="move" android:scheme="abc" />
</intent-filter>
답변 2
이걸 보시고 하시면 되는데
딥링크 + 변수전달을 하면 안드로이드앱에서 변수를 전달받을수 있고
해당 변수에 따라서 분기를 한후 웹뷰로 이동을 하시면 됩니다.
<a href="abc://move?mode=register"> 메인화면 바로가기 </a>
이렇게 전달하면 앱에서 mode 라는 변수값을 받을수 있고 그받은변수로
웹뷰명.loadurl("도메인/member/register.html");
이런식으로 처리가됩니다.
https://developer.android.com/training/app-links/deep-linking?hl=ko#java
=> 기본적인 설명같고 이걸 참고해서 아래와 같이 사용합니다.
Intent intent = getIntent();
if (Intent.ACTION_VIEW.equals(intent.getAction())) {
Uri uri = intent.getData();
String mode = CommonLib.parse_scheme_url(openurl, "mode");
Log.d(TAG, TAG + " ::: deeplink mode ::: " + mode);
if (mode.equals("register") {
웹뷰명.loadurl("도메인/member/register.html");
}
}
CommonLib 클래스 화일에 해당 함수
public static String parse_scheme_url(String scheme, String key) {
try {
Uri url = Uri.parse(scheme);
return url.getQueryParameter(key);
} catch (Exception e) {
return " ";
}
}
=> 저는 이런식으로 딥링크를 받아서 사용합니다.
=> 이게 좀더 쉬울거 같네요