更改Android别名会产生“错误”;“应用程序已停止工作”;错误,即使它在Android API 25的emulator中正确更改了它

更改Android别名会产生“错误”;“应用程序已停止工作”;错误,即使它在Android API 25的emulator中正确更改了它,android,alias,Android,Alias,下面的代码将应用程序的默认名称及其相关图标更改为新名称和图标 try { getPackageManager().setComponentEnabledSetting( new ComponentName("com.applications.social.myapp", "com.applications.social.myapp.MainActivityFlavorOne"), Packa

下面的代码将应用程序的默认名称及其相关图标更改为新名称和图标

try {

            getPackageManager().setComponentEnabledSetting(
                    new ComponentName("com.applications.social.myapp", "com.applications.social.myapp.MainActivityFlavorOne"),
                    PackageManager.COMPONENT_ENABLED_STATE_ENABLED, PackageManager.DONT_KILL_APP);


            getPackageManager().setComponentEnabledSetting(
                    new ComponentName("com.applications.social.myapp", "com.applications.social.myapp.MainActivityFlavorZero"),
                    PackageManager.COMPONENT_ENABLED_STATE_DISABLED, PackageManager.DONT_KILL_APP);


        } catch (Exception ex) {

        }    


        try {
            Thread.sleep(10000);
        } catch (InterruptedException e) {
            e.printStackTrace();
        }
        catch (Exception e)
        {

        }
另一方面,这是在清单文件上定义别名的方式:

   <activity-alias
            android:screenOrientation="portrait"
            android:name=".MainActivityFlavorZero"
            android:label="MyLabel"
            android:icon="@mipmap/notification_icon"
            android:enabled="true"
            android:targetActivity="com.applications.social.myapp.InstallationActivity"
            android:windowAnimationStyle="@null"
            android:windowBackground="@color/common_google_signin_btn_text_dark"
            android:exported="true">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity-alias>



        <activity-alias
            android:screenOrientation="portrait"
            android:label="MyLabel2"
            android:name=".MainActivityFlavorOne"
            android:enabled="false"
            android:icon="@mipmap/lantern"
            android:targetActivity="com.applications.social.myapp.InstallationActivity"
            android:windowAnimationStyle="@null"
            android:windowBackground="@color/common_google_signin_btn_text_dark"
            android:exported="true">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity-alias>

有几件事让我觉得这是一个模拟器错误,而不是代码中的错误,这些:

1) 到目前为止,这个问题出现在Android API 25的emulator中,但同样的代码可以很好地工作,在具有API 19和23的物理设备中,以及在具有API 22和24的emulator中

2) 相反的代码(将从MainActivityFlavorOne更改为MainActivityFlavorZero的代码)始终有效

3) 该错误发生在第一次设置change MainActivityFlavorOne时,在第一次设置时,它始终有效

4) 即使出现错误,应用程序的图标和名称也会在应用程序屏幕中更改(并提供其所需的行为),因此这并不是因为代码没有用于实际目的,而是因为代码导致的其他行为发生后,错误仍然会出现


但无论如何,我想看看是否有人遇到过类似的情况,并能提出解决错误的方法。

好吧,我不认为这是一个“真正的”解决方案,但对我来说已经足够了

通过将目标sdk版本设置为24并使用它构建应用程序,该应用程序不再出现该错误,因此很明显,这与API有关