Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/blackberry/2.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_Reflection_Launcher - Fatal编程技术网

如何刷新Android';谁的家庭发射器?

如何刷新Android';谁的家庭发射器?,android,reflection,launcher,Android,Reflection,Launcher,我一直在写一个后台服务,它在公司设备上强制执行我客户的安全策略。第一次安装服务时,我会启动一个活动,以便输入初始设置数据。在此之后,我禁用该活动: ComponentName componentToDisable = new ComponentName("com.acme.background","com.acme.background.FirstLaunch"); getPackageManager().setComponentEnabledSetting(componentT

我一直在写一个后台服务,它在公司设备上强制执行我客户的安全策略。第一次安装服务时,我会启动一个活动,以便输入初始设置数据。在此之后,我禁用该活动:

ComponentName componentToDisable = new ComponentName("com.acme.background","com.acme.background.FirstLaunch");
        getPackageManager().setComponentEnabledSetting(componentToDisable,
         PackageManager.COMPONENT_ENABLED_STATE_DISABLED,
         PackageManager.DONT_KILL_APP);
FirstLaunch.this.finish();
此时,临时图标仍然可见,直到主启动器刷新/重新启动。在某些设备上这可能需要一段时间,我遇到的问题是用户会感到困惑,并通过图标卸载。我需要刷新主启动器。这里是我通过反射尝试过的一种方法,它给了我当前的HomeLauncher及其方法

PackageManager PM = getPackageManager();
Intent home_intent = new Intent("android.intent.action.MAIN");
home_intent.addCategory("android.intent.category.HOME");
home_intent.addCategory("android.intent.category.DEFAULT");
ComponentName cn = home_intent.resolveActivity(PM);
Context foreignContext = createPackageContext("com.android.launcher", Context.CONTEXT_IGNORE_SECURITY | Context.CONTEXT_INCLUDE_CODE);
String clName = cn.getClassName();
Class<?> test = foreignContext.getClassLoader().loadClass(clName);

不幸的是,您不能这样做——您必须等待用户重新启动启动器


处理此问题的一种常见方法是,一旦图标被“删除”,就会显示一个toast/对话框,要求用户重新启动启动器,以便完全删除图标。

看起来您是正确的。谢谢你的回答,如果有人需要,我会用代码更新我的问题。
PackageManager PM = getPackageManager();
Intent home_intent = new Intent("android.intent.action.MAIN");
home_intent.addCategory("android.intent.category.HOME");
home_intent.addCategory("android.intent.category.DEFAULT");
ComponentName cn = home_intent.resolveActivity(PM);
String pkgName = cn.getPackageName();
Intent intent;
if (android.os.Build.VERSION.SDK_INT >= 9) {                       
    Uri packageURI = Uri.parse("package:" + pkgName);
    intent = new Intent("android.settings.APPLICATION_DETAILS_SETTINGS", packageURI);
    startActivity(intent);
    FirstLaunch.this.finish();
    performCleanup();
}  else  {
    //support for 2.1
    intent = new Intent(Intent.ACTION_VIEW); 
    intent.setClassName("com.android.settings", "com.android.settings.InstalledAppDetails"); 
    intent.putExtra("com.android.settings.ApplicationPkgName", pkgName); 
    intent.putExtra("pkg", pkgName); 
    startActivity(intent);  
    FirstLaunch.this.finish();
    performCleanup();
}