2016-07-01 1 views
1

나는 웹 사이트에서 공유 웹 사이트의 URL을 잡을 필요가있는 안드로이드 앱을 만들고 있습니다. 예를 들어 크롬을 실행하고 공유를 클릭하고 앱을 선택하면 해당 링크가 열리고 관리됩니다. 나는 다음 코드를 작성했습니다같은 URL로 하나의 앱으로 의도 잡기

매니페스트 :

<activity 
    android:name=".LoginActivity" 
    android:label="@string/title_activity_login"> 
    <intent-filter android:label="Hello"> 
     <action android:name="android.intent.action.SEND" /> 
     <data android:mimeType="*/*" /> 
     <category android:name="android.intent.category.DEFAULT" /> 
    </intent-filter> 
</activity> 

활동 :

Intent intent = getIntent(); 
intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_SINGLE_TOP); 
String action = intent.getAction(); 
String type = intent.getType(); 

if (Intent.ACTION_SEND.equals(action) && type.equals("text/plain")) { 
    // ..do something 
} 

그러나 두 가지 문제가 발생

  1. 의도 한 번만 잡힌합니다. 웹 사이트를 공유 할 때 위대한 작품이지만 브라우저로 돌아가서 다시 공유하고 싶을 때 (같은 URL 또는 다른 것) 의도가 잡히지 않습니다.
  2. 앱을 수동으로 시작한 다음 웹 사이트를 열고 링크를 공유하면 앱의 다른 인스턴스가 시작됩니다 (앱은 아니지만이 특정 활동).

이러한 문제를 해결하는 방법에 대해 조언을 구하십시오.
도움이 될 것입니다.

답변

0

오키, 나는 첫번째 것을 풀었습니다. 솔직히 말해서 바보 같은 실수였습니다. onCreate에서 getIntent를 사용하여 코드 조각을 넣었으며 onResume에 있어야합니다. 매니페스트

 android:launchMode="singleTask"> 

퍼팅과

@Override 
protected void onNewIntent(Intent intent) { 
    super.onNewIntent(intent); 

    catchIntent(intent); 
} 

해결 문제 onResume에서 코드를 이동 : 내가 수동으로 첫 번째 :(

편집을 시작했습니다 때 어쨌든, 여전히 애플 리케이션의 새로운 인스턴스를 생성 처음 전화를 걸 때 전화를 걸 수 있습니다.

intent.setFlags(intent.FLAG_ACTIVITY_SINGLE_TOP); 

도 마찬가지이다.

관련 문제