看到有朋友留言,没有及时回复,不好意思。

我下面做的是基于Android 4.0系统做的,在其他系统上并没有测试,并且Android的权限控制在4.4之后就严格起来了,所以可能会有问题,望知悉!


自己做了个很简单的launcher,但是在设置默认launcher的时候,每次重启机器的时候,就会重新弹出选择界面选择需要的launcher。


于是就google之,发现很多文章都一样,没有解决实际问题;有的需要自己重新编译源码,那当然没有必要,因为我这个只是简单的应用程序。


具体可以看以下代码


        IntentFilter filter = new IntentFilter();         filter.addAction("android.intent.action.MAIN");        filter.addCategory("android.intent.category.HOME");         filter.addCategory("android.intent.category.DEFAULT");        Context context = getApplicationContext();        ComponentName component = new ComponentName(context.getPackageName(), MainActivity.class.getName());          ComponentName[] components = new ComponentName[] {new ComponentName("com.example.launcher", "com.example.launcher.Launcher"), component};          pm.clearPackagePreferredActivities("com.example.launcher");         pm.addPreferredActivity(filter, IntentFilter.MATCH_CATEGORY_EMPTY, components, component);


以上代码存在于自己写的launcher代码onCreate方法中

ComponentName component = new ComponentName(context.getPackageName(), MainActivity.class.getName()); 

以上是自己的launcher的package name和需要加载的Activity name。

ComponentName[] components = new ComponentName[] {new ComponentName("com.example.launcher", "com.example.launcher.Launcher"), component};  

其中com.example.launcher 假设为系统的launcher,我们需要用自己做的来替换它作为默认launcher。


如果系统有多个launcher,那么可以通过ResolveInfo,得到所有的launcher。

        Intent intent=new Intent(Intent.ACTION_MAIN);        intent.addCategory(Intent.CATEGORY_HOME);        List resolveInfoList = pm.queryIntentActivities(intent, 0);

保留自己的launcher。

以上通过自己验证,如果有疑问或者有好的办法,都可以交流



更多相关文章

  1. 没有一行代码,「2020 新冠肺炎记忆」这个项目却登上了 GitHub 中
  2. Nginx系列教程(六)| 手把手教你搭建 LNMP 架构并部署天空网络电影
  3. Android(安卓)NDK之旅-OpenGL 初探
  4. android中的ANR(程序无响应)bug及其解决方案
  5. Eclipse如何快速调试系统App(具有系统权限的Android(安卓)App)即Ec
  6. 基于Android的温湿度采集系统
  7. Android:谈一谈安卓应用中的Toast情节(基础)
  8. Android(安卓)之 悬浮窗
  9. Android构建BaseActivity和BaseFragment

随机推荐

  1. Android(安卓)Bundle类
  2. unity3d IL2CPP for android
  3. Android(安卓)studio配置NDK问题小结
  4. Android客户端Socket连接PC服务器端(加评
  5. Android中OptionMenu的使用
  6. Android(安卓)SQLite数据库异常: unable
  7. 元数据Meta Data
  8. Android中关于EditText不能取得值的问题
  9. Android自定义属性
  10. Android|Smaller apk