2017-11-27 28 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> 

このコードは十分であり、一部のモバイルデバイス上で動作し、Androidのバージョン5.0、6.0および7.0と、特にデバイスが、バージョン7.1と8.0で動作しません。なぜこれが起こるのですか?許可の問題ですか?

+0

あなたの '意図 'はどのように見えますか? @MuratK。 –

+0

ユーザーがGmailからリンク(mysite.org)をクリックしたときに私のアプリを開く必要があります。 –

答えて

2

例:あなたのURLがhttps://example.comのようなものになり、あなたは以下のようにAndroidのマニフェストでインテントフィルタを持っています。

<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マッピングエディタを使用しますAndroid Appリンク(Androidスタジオ>ツール> Androidアプリリンク)

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

関連する問題