2017-06-01 171 views
0

我的Android应用程序的主要活动有一个默认名称和一个别名,如果用户选择,它应该放在应用程序中。我用以下方式在我的AndroidManifest.xml中定义了这个。安卓apk安装默认名称及其别名的活动

 <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设备上。

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

我没有办法改变别名,除非这样。

还有什么可以做的吗?

回答

1

您调节两个主要活动LAUNCHER

  <action android:name="android.intent.action.MAIN" /> //<--wrong 
      <category android:name="android.intent.category.LAUNCHER" /> <--wrong 

您需要将这些行仅添加到实现你的图标或任何您的具体活动。

+0

感谢您的回答,但它不起作用,我正在编辑我的帖子以显示相关问题。 – user2638180

0

那么,它实际上比我想象的要容易。

在活动别名中,您只需将android:enabled =“true”更改为android:enabled =“false”,这样别名仍然可以正常工作,但不会首次显示为启动器。