Android apk安装活动及其默认名称及其别名

时间:2017-06-01 01:38:50

标签: android android-studio

我的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设备上没有安装该应用。

看起来,无论如何,必须使用启动器类别定义别名才能以这种方式更改应用程序别名。

除非这样,我看不到改变别名的方法。

还有其他事情可以做吗?

2 个答案:

答案 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;,这样别名仍然可以正常运行,但是第一次没有显示为启动器。

相关问题