1

アンドロイド7.1.2のみ、同じデバイスに複数のバージョンのアプリがインストールされている場合、アプリ内に暗黙インテントを起動できません。Android 7.1.2暗黙のインテント 'このアプリケーションを実行できるアプリケーションはありません'

私は同じアプリケーションの複数のアプリケーションの亜種を持っていますが、それぞれ異なるapplicationIdを持っていますが、同じjavaパッケージです。 build.gradleで

は:

android { 
defaultConfig.applicationId 'com.myapp.appid' 
buildTypes { 
    debug.applicationIdSuffix 'foo' 
    beta.applicationIdSuffix 'bar' 
}} 

とのAndroidManifest.xmlで、私は私のアプリ内で暗黙的に起動するアクティビティを定義している

<?xml version="1.0" encoding="utf-8"?> 
<manifest 
     package="com.myapp.mypackage"> 
    <application 
      android:name="com.myapp.mypackage.MyApplication"> 
     <activity 
      android:name="com.myapp.mypackage.MyActivity"> 
       <intent-filter> 
        <action android:name="com.myapp.mypackage.MyActivity" /> 
        <category android:name="android.intent.category.DEFAULT"/> 
       </intent-filter> 
     </activity> 
    </application> 
</manifest> 

私はそうのようなJavaでこの活動を開始します:

Intent i = new Intent(); 
i.setAction("com.myapp.mypackage.MyActivity"); 
ActivityCompat.startActivity(activity, intent, bundle); 

「デバッグ」と「ベータ」の両方のビルドタイプを同じデバイスにインストールすると、 7.1.2 startActivityはResolveActivityの意図を扱うためにアプリを選択する必要がなくても機能します。 7.1.2では、ResolveActivityアプリチューザーが空で開き、「このアプリケーションは実行できません」と表示されます。

私は

getPackageManager().queryIntentActivities(i, PackageManager.MATCH_DEFAULT_ONLY); 

の結果を観察すると私は同じ問題を見ていた結果

com.myapp.appid.foo/com.myapp.mypackage.MyActivity 
com.myapp.appid.bar/com.myapp.mypackage.MyActivity 

But the user cannot proceed

+0

は、アプリケーションに名前タグ –

+0

おかげアラシュを与えることを試みます。私のアプリケーションには名前タグがあります。私はここを簡潔にするためにここから出ました。混乱させて申し訳ありません。 – CBeng

+0

これはAndroidのバグです。ここで報告されています:https://issuetracker.google.com/issues/37576886 –

答えて

0

としてインストールされたバージョンの両方を見ています。明示的なインテントに切り替えることで修正できました。

0

同じJavaパッケージを使用し、暗黙のインテントでアクティビティを起動する複数のアプリの亜種でも、同じような状況がありました。

は終わりでは、最も簡単な解決策は、単に現在のアプリケーションへの暗黙的な意思検索を制限することでした:

Intent i = new Intent(); 
i.setAction("com.myapp.mypackage.MyActivity"); 
i.setPackage(context.getPackageName()); 
... 
関連する問題