我的Android应用的主要活动,具有默认名称和一个别名名称,如果用户选择,则应将其放在应用程序中。我以下方式在我的androidmanifest.xml上定义了这一点。
<activity
android:name="com.example.fgd.myapplication4.MainActivity4"
android:label="mydefaultlabel"
android:theme="@style/AppTheme.NoActionBar"
android:exported="true" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.DEFAULT" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity-alias
android:label="myaliaslabel"
android:name=".MainActivity-Flavor-One"
android:enabled="true"
android:targetActivity=".MainActivity4"
android:exported="true" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.DEFAULT" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity-alias>
</application>
,但我尝试构建APK并安装手机,并且它安装了带有" MyDefaultLabel"名称的图标,以访问该应用程序,而另一个带有" Myaliaslabel"的图标以访问它,这不是我所需的行为,首先,我希望它只是使用" mydefaultlabel"安装图标。
我应该做什么来实现这种行为?
pd:尝试删除和,一旦我使用此代码更改应用程序的别名,就无法再运行该应用程序了:
getPackageManager().setComponentEnabledSetting(
new ComponentName("com.example.alber.myapplication4", "com.example.alber.myapplication4.MainActivity-Flavor-One"),
PackageManager.COMPONENT_ENABLED_STATE_ENABLED, PackageManager.DONT_KILL_APP);
getPackageManager().setComponentEnabledSetting(
new ComponentName("com.example.alber.myapplication4", "com.example.alber.myapplication4.MainActivity4"),
PackageManager.COMPONENT_ENABLED_STATE_DISABLED, PackageManager.DONT_KILL_APP);
我发现该应用未安装在我的Android设备上的错误。
看起来,无论如何,都必须使用启动器类别定义别名才能以这种方式更改应用程序别名。
我认为除了以这种方式以外的方式都无法更改别名。
还有其他可以做的事情吗?
您正在设置两个主活动和启动器
<action android:name="android.intent.action.MAIN" /> //<--wrong
<category android:name="android.intent.category.LAUNCHER" /> <--wrong
您只需要将这些行添加到实现图标或其他任何特定活动中。
好吧,这实际上比我容易。
在Activity-Alias中,您只需要更改Android:enabled =" true"到Android:enabled =" false",这样,别名仍然可以正常工作,但不会首次显示作为启动器。<<<<<<<<<<<<