我正在尝试从存储在外部SD卡中的.apk文件升级家庭应用程序。但是,波纹管误差显示为无穷大,然后设备会自行重新启动。
09-25 11:58:44.040: I/ActivityManager(1313): Force finishing activity ActivityRecord{4238d680 u0 com.jkpark.cluster/.MainActivity}
09-25 11:58:44.040: I/ActivityManager(1313): START u0 {act=android.intent.action.MAIN cat=[android.intent.category.HOME] flg=0x10000000 cmp=com.jkpark.cluster/.MainActivity} from pid 0
我猜ActivityManager
启动任何家庭应用程序,当我调用事件来重新安装我的家庭应用程序时,但是没有其他家庭应用程序存在。所以ActivityManager
强制启动,然后一次又一次地调用启动主应用程序。
当我安装了另一个被归类的家庭应用程序" android.intent.category.HOME"并升级我的家庭应用程序,它工作正常。
但是,我想升级而不安装任何其他家庭应用程序。 所以,任何人都可以帮助我。 谢谢。
答案 0 :(得分:1)
我有类似的问题。在启动器更新过程中,android OS没有要运行的家庭活动。发生这种情况,因为一个线程正在安装,一个线程正在尝试同时运行启动器。这个问题很容易通过创建另一个Launcher来解决,让我们称之为启动器切换器。这个发射器只有一个目的 - 运行你原来的louncher。 对我来说就像魅力一样。 这是启动器切换器的代码。
private void runLauncher() {
if(isMyLauncherDefault()) {
unsetThisLauncherAsDefault();
}
final Handler handler = new Handler();
handler.postDelayed(new Runnable() {
@Override
public void run() {
Intent LaunchIntent = getPackageManager().getLaunchIntentForPackage(LAUNCHER_PACKAGE);
startActivity(LaunchIntent);
}
}, TWO_SECONDS_IN_MILLISECONDS);
}
private boolean isMyLauncherDefault() {
final IntentFilter filter = new IntentFilter(Intent.ACTION_MAIN);
filter.addCategory(Intent.CATEGORY_HOME);
List<IntentFilter> filters = new ArrayList<IntentFilter>();
filters.add(filter);
final String myPackageName = getPackageName();
List<ComponentName> activities = new ArrayList<ComponentName>();
PackageManager packageManager = (PackageManager) getPackageManager();
packageManager.getPreferredActivities(filters, activities, LAUNCHER_SWITCHER_PACKAGE);
if(activities.size() == NO_LAUNCHER)
return true;
for (ComponentName activity : activities) {
if (myPackageName.equals(activity.getPackageName())) {
return true;
}
}
return false;
}
private void unsetThisLauncherAsDefault() {
getPackageManager().clearPackagePreferredActivities(getPackageName());
}
答案 1 :(得分:0)
我想你只想删除系统主屏幕应用,只想将你的应用作为默认启动器..
在这种情况下,你必须root你的设备删除系统应用程序.. 在Android环境中,无法在没有root访问权限的情况下删除系统应用程序。