Android 在遇到尚未注册到系统消息的新程序包后删除了应用程序图标
在我的应用程序中,我以编程方式删除了应用程序图标,如Android 在遇到尚未注册到系统消息的新程序包后删除了应用程序图标,android,performance,android-emulator,apk,emulation,Android,Performance,Android Emulator,Apk,Emulation,在我的应用程序中,我以编程方式删除了应用程序图标,如 PackageManager p = getPackageManager(); p.setComponentEnabledSetting(getComponentName(), PackageManager.COMPONENT_ENABLED_STATE_DISABLED, PackageManager.DONT_KILL_APP); 之后,应用程序会安装并正常工作,但当我尝试在一些更改后重新安装应用程序时,它会给出以下结果 新软
PackageManager p = getPackageManager();
p.setComponentEnabledSetting(getComponentName(),
PackageManager.COMPONENT_ENABLED_STATE_DISABLED, PackageManager.DONT_KILL_APP);
之后,应用程序会安装并正常工作,但当我尝试在一些更改后重新安装应用程序时,它会给出以下结果
新软件包尚未在系统中注册
我正在做的任何事情
注意。由于您在Android软件包管理器中完全禁用了该活动,因此出现错误。在第一次运行中,这很好,因为我认为您已经在清单中使用新的快捷方式定义了活动别名。但是,当你更新你的应用程序时,应用程序会尝试启动禁用的启动器,而当你无法启动它时,会导致禁用。一个(不完美的)解决方案如下:
<activity
android:name="com.example.Your_Launchscreen"
android:icon="@drawable/your_alternative_icon"
android:label="NotRealAppname"
android:windowSoftInputMode="stateAlwaysHidden" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity-alias
android:name=".Launchscreen_2"
android:enabled="true"
android:icon="@drawable/ic_launcher"
android:label="@string/real_app_name"
android:targetActivity=".Your_Launchscreen" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity-alias>
为了再次展示:
PackageManager p = getPackageManager();
ComponentName componentName =
new ComponentName(activity,Your_Launchscreen.class.getName()+"_2");
p.setComponentEnabledSetting(componentName,
PackageManager.COMPONENT_ENABLED_STATE_ENABLED, PackageManager.DONT_KILL_APP);
Toast.makeText(activity, "Real Appicon visible again...", Toast.LENGTH_LONG).show();
此解决方案并不完美,因为在安装应用程序后,您有两个应用程序图标。真正的图标和隐藏的图标。但是你现在可以隐藏真正的图标并毫无问题地更新你的应用程序。你也可以忽略此消息 只有在使用adb重新安装后,它才会出现尝试启动不再注册的活动。你应该手动启动应用程序
PackageManager p = getPackageManager();
ComponentName componentName =
new ComponentName(activity,Your_Launchscreen.class.getName()+"_2");
p.setComponentEnabledSetting(componentName,
PackageManager.COMPONENT_ENABLED_STATE_ENABLED, PackageManager.DONT_KILL_APP);
Toast.makeText(activity, "Real Appicon visible again...", Toast.LENGTH_LONG).show();