모바일 브라으저 링크를 안드로이드웹뷰에서 열고자 합니다.

모바일 브라으저 링크를 안드로이드웹뷰에서 열고자 합니다.

QA

모바일 브라으저 링크를 안드로이드웹뷰에서 열고자 합니다.

답변 2

본문

안녕하세요.
아래와 같은 링크가 브라우저상에 있다고 가정하겠습니다.
링크를 클릭했을때, 보고있는 브라우저가 열리는것이 아닌 설치되어있는  안드로이드웹뷰 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

https://medium.com/%EB%B0%95%EC%83%81%EA%B6%8C%EC%9D%98-%EC%82%BD%EC%A7%88%EB%B8%94%EB%A1%9C%EA%B7%B8/%EB%94%A5%EB%A7%81%ED%81%AC-deeplink-%EC%B2%98%EB%A6%AC-schemeactivity-%ED%95%98%EB%82%98%EB%A1%9C-%EB%81%9D%EB%82%B4%EA%B8%B0-877c2b60619b

 

이걸 보시고 하시면 되는데

 

딥링크 + 변수전달을 하면 안드로이드앱에서 변수를 전달받을수 있고 

 

해당 변수에 따라서 분기를 한후 웹뷰로 이동을 하시면 됩니다.

 

<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 " ";
}
}

 

=> 저는 이런식으로 딥링크를 받아서 사용합니다.

=> 이게 좀더 쉬울거 같네요

답변을 작성하시기 전에 로그인 해주세요.
QA 내용 검색
질문등록
전체 123,671
© SIRSOFT
현재 페이지 제일 처음으로