Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/225.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 在遇到尚未注册到系统消息的新程序包后删除了应用程序图标_Android_Performance_Android Emulator_Apk_Emulation - Fatal编程技术网

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();