2017-11-27 16 views
-1

전자 메일, 메시지 또는 브라우저 응용 프로그램의 URL 링크를 클릭하면 응용 프로그램을 열어야합니다. 그래서,이 기능에 대한 내 코드를 참조하십시오Intent.action.VIEW가 일부 장치에서 작동하지 않습니다.

<activity 
    android:name=".ui.main.MainActivity" 
    android:configChanges="orientation" 
    android:screenOrientation="portrait"> 
    <intent-filter> 
     <action android:name="android.intent.action.MAIN" /> 
     <category android:name="android.intent.category.LAUNCHER" /> 
    </intent-filter> 

    <intent-filter> 
     <data android:scheme="https" /> 
     <data android:scheme="https" android:host="www.mysite.org"/> 
     <action android:name="android.intent.action.VIEW"/> 
     <category android:name="android.intent.category.BROWSABLE"/> 
     <category android:name="android.intent.category.APP_EMAIL"/> 
     <category android:name="android.intent.category.APP_MESSAGING"/> 
     <category android:name="android.intent.category.APP_BROWSER"/> 
     <category android:name="android.intent.category.DEFAULT"/> 
    </intent-filter> 
</activity> 

이 코드는 충분하며 일부 모바일 장치, 안드로이드 버전 5.0, 6.0 및 7.0하지만 버전 7.1 및 8.0에서 작동하지 않습니다 특히 기기에서 작동. 왜 이런 일이 생길까요? 허가 문제입니까?

+0

'의도'는 어떻게 생겼습니까? –

+0

@ MuratK. 사용자가 Gmail에서 링크 (mysite.org)를 클릭하면 앱을 열어야합니다. –

답변

2

예 : 귀하의 URL이 https://example.com과 같이 될 것입니다 그리고 당신은 다음과 안드로이드 매니페스트에서 인 텐트 필터가 있습니다

<activity 
    android:name="com.droid.MainActivity" 
    android:label="@string/app_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:host="example.com" 
      android:scheme="https" /> 
    </intent-filter> 
</activity> 

사용 URL 매핑 편집기 쉽게 활동에 URL 텐트 필터를 추가하기를 안드로이드 애플 리케이션 링크 (안드로이드 스튜디오> 도구> 안드로이드 애플 리케이션 링크).

1

changes in Android O을 읽은 후 나는

URI를 빈 라벨을 포함 할 수 없습니다 다음과 같은 문제가 설명하는 결론에 도달했습니다. 이전에는 플랫폼에서 호스트 이름의 빈 레이블을 허용하기위한 해결 방법을 지원했는데 이는 URI가 불법 인 입니다. 이 해결 방법은 이전 libcore 릴리즈와의 호환성을위한 것입니다. API를 잘못 사용하는 개발자는 ADB 메시지를 보았습니다 : "URI example..com에 호스트 이름에 빈 레이블이 있습니다. 이것은 이며 향후 Android 릴리스에서 허용되지 않습니다."라는 메시지가 나타납니다. Android 8.0에서는이 대안을 제거합니다. 조작 된 URI에 대해서는 null이 반환됩니다. 사용자가 대체 메뉴를 볼 수 있도록

그래서 당신 intent-filter 구문 android:label="string resource"를 추가하려고합니다.

+0

실종 된 레이블이 실제로 그 실종 사례였습니다! 사람들이 장래에 찾아야 할지를 알기 만하면됩니다. – Rainmaker