アンドロイド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
は、アプリケーションに名前タグ –
おかげアラシュを与えることを試みます。私のアプリケーションには名前タグがあります。私はここを簡潔にするためにここから出ました。混乱させて申し訳ありません。 – CBeng
これはAndroidのバグです。ここで報告されています:https://issuetracker.google.com/issues/37576886 –