2016-06-08 1 views
2

내 앱 내부에 딥 링크를 구현 중이며 내 앱 내부에서 딥 링크를 여는 방법이나 예를 찾을 수 없습니다. 예 : 특정 배너를 열면 myapp://game/1 링크가 열리 며 내 앱 내부에서 다른 활동으로 연결됩니다. 어떻게해야합니까?앱에서 안드로이드 딥 링크 열기

+0

shouldOverrideUrlLoading을 무시할 수있는이 통과 : HTTPS : //docs.adjust.com/en/deeplinking/ –

+0

조정을 사용하고 있지 않습니다. – Datenshi

+0

앱 안에서도 인 텐트를 시작해야합니다. –

답변

0

매니페스트에서 딥 링크 체계를 등록해야합니다.

<activity android:name=".DeepLinkingActivity" 
     android:configChanges="orientation|screenSize" > 
     <intent-filter> 
      <action android:name="android.intent.action.VIEW" /> 
      <category android:name="android.intent.category.BROWSABLE" /> 
      <category android:name="android.intent.category.DEFAULT" /> 
      <data android:scheme="myapp" /> 
     </intent-filter> 
    </activity> 

정의 된 구성표가있는 링크를 클릭하면 DeepLinkingActivity가 열립니다. 그리고 활동에 무엇을 처리 :

private final String GAME_LINK = "game"; 
private final String VIDEO_LINK = "video"; 

private static String PASSED_LINK = "PassedLink"; 

public static Intent createIntent(String link, Context context) { 
    Intent intent = new Intent(context, DeepLinkingActivity.class); 
    intent.putExtra(PASSED_LINK, link); 
    return intent; 
} 

@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    ... 
    String host; 
    String link = getIntent().getStringExtra(PASSED_LINK); 
    if(TextUtils.isEmpty(link)) { 
     Intent intent = getIntent(); 
     if (intent.getData() != null) { 
      Uri data = intent.getData(); 
      host = data.getHost(); 
     } else { 
      // No links 
     } 
    } else { 
      Uri data = Uri.parse(link); 
      host = data.getHost(); 
    } 

    if(host.equals(GAME_LINK)) { 
     // myapp://game/ 
     // Do something 
    } else if(host.equals(VIDEO_LINK)){ 
     // myapp://video/ 
     // Do something 
    } else { 
     // Do something 
    } 
... 
} 

그런 다음 당신은 당신의 위젯에서 호출 할 수 있습니다 : 당신이 웹보기 링크가있는 경우

widget.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View view) { 
      startActivity(DeepLinkingActivity.createIntent("linik_for_this_wiget"), getContext()); 
     } 
    }); 

당신은 또한

+0

나는 모든 논리를 구현했습니다. 그리고 그것은 adb 셸에서 작동합니다. 하지만 내 앱 콘텐츠 내부에서 딥 링크를 시작하는 방법을 알고 싶습니다. 예를 들어, "myapp : //"링크를 처리하고 특정 활동을 유도하는 텍스트 뷰를 만드는 방법 – Datenshi

+0

인트라 앱 선호로 내 대답을 업데이트했습니다. 다른 방법으로는 알지 못합니다. 희망이 도움이됩니다. – damjanh