【问题标题】:How to Switching between launchers of Android Programatically如何以编程方式在 Android 上的启动器之间切换
【发布时间】:2015-09-10 13:36:26
【问题描述】:

我有两个启动器,Android 启动器和我的自定义启动器。我的自定义启动器是默认启动器。当 android 设备启动时,它会启动我的应用程序。我想要做的是,当用户在我的启动器中按下某个按钮时,我想启动 android 启动器(带有 android)而不要求用户选择启动器。我想像启动任何其他应用程序一样这样做。

安卓可以做到吗?

【问题讨论】:

    标签: java android android-launcher


    【解决方案1】:

    不幸的是,除非设备已植根,否则这是不可能的,在 android 2.2 之前有一种方法可以让你做到这一点,但它不再可用。

    但如果设备已root或您的应用是“系统”应用(位于 /system/apps 文件夹中),那么您可以在应用启动时禁用其他 Launcher 应用,并在应用退出时重新启用它们,这样,您的启动器就成为系统中唯一的启动器,因此它将被隐式视为默认启动器(但您需要在启动器活动中处理“返回”按钮,主页按钮可以正常工作)

    【讨论】:

    • 如果我的应用程序是系统应用程序,那么如何将android的默认启动器作为应用程序启动
    【解决方案2】:

    你可以试试

    Intent intent=null;
    final PackageManager packageManager=getPackageManager();
    for(final ResolveInfo resolveInfo:packageManager.queryIntentActivities(new Intent(Intent.ACTION_MAIN).addCategory(Intent.CATEGORY_HOME), PackageManager.MATCH_DEFAULT_ONLY))
    { 
        if(!getPackageName().equals(resolveInfo.activityInfo.packageName))  
            //if this activity is not in our activity (in other words, it's another default home screen)
        { 
            intent=packageManager.getLaunchIntentForPackage(resolveInfo.activityInfo.packageName);
            intent.setAction(Intent.ACTION_MAIN);
            intent.addCategory(Intent.CATEGORY_LAUNCHER);
            intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP
                | Intent.FLAG_ACTIVITY_CLEAR_TASK
                | Intent.FLAG_ACTIVITY_NEW_TASK);
            break; 
        } 
    } 
    startActivity(intent);
    

    【讨论】:

    • 感谢您的快速重播。我刚刚尝试过,但出现以下错误。
    • 进程:me.xxxxx.xxxxx.homescreen,PID:2474 09-09 23:08:29.788:E/AndroidRuntime(2474):java.lang.NullPointerException:尝试调用虚拟方法'boolean android.content.Intent.migrateExtraStreamToClipData()' 在空对象引用 09-09 23:08:29.788: E/AndroidRuntime(2474): at android.app.Instrumentation.execStartActivity(Instrumentation.java:1494)
    • 请再试一次,我已经更新了我的答案。我已经测试了我发布的代码并且它有效
    • 从错误中可以看出,它没有找到任何其他应用程序作为启动器。意图为空,然后崩溃
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-05-02
    • 1970-01-01
    • 2018-09-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多