我的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设备上没有安装该应用。
看起来,无论如何,必须使用启动器类别定义别名才能以这种方式更改应用程序别名。
除非这样,我看不到改变别名的方法。
还有其他事情可以做吗?
答案 0 :(得分:1)
您正在设置两个主要活动和 LAUNCHER
<action android:name="android.intent.action.MAIN" /> //<--wrong
<category android:name="android.intent.category.LAUNCHER" /> <--wrong
您只需将这些行添加到实现您的图标或其他任何内容的特定活动中。
答案 1 :(得分:0)
嗯,它实际上比我更容易。
在activity-alias中你只需要改变android:enabled =&#34; true&#34;到android:enabled =&#34; false&#34;,这样别名仍然可以正常运行,但是第一次没有显示为启动器。