android设备修改默认桌面为自定义应用

android设备修改默认桌面为自定义应用

应用场景
在一些专用安卓设备(例如丰巢柜),可能需要在点击默认的home键时启动自定义应用,屏蔽用户开启其他应用的入口,可通过下面介绍的方法将自己的应用设置为默认桌面。但是这时用户无法开启android设备的其他应用了,所以还需要为管理用户提供开启其他应用(例如系统设置)的入口。

1、修改默认桌面
假设需要设置为桌面应用app入口activity为MainActivity。

1.1 修改应用的AndroidManifest.xml
在MainActivity的intent-filter节点中添加如下配置:

1.2 创建工具类PackageListCache,缓存当前android安装的应用。

import android.app.Activity;
import com.alibaba.fastjson.JSONObject;
import java.util.HashMap;
import java.util.Map;

public final class PackageListCache {
    //应用报名对应的启动入口activity和app名称
    private static Map<String, JSONObject> PACKAGE_2_ACTIVITY = new HashMap<>();
    private static Activity MAIN_ACTIVITY = null;

    public static Activity getMainActivity() {
        return MAIN_ACTIVITY;
    }

    public static void setMainActivity(Activity mainActivity) {
        MAIN_ACTIVITY = mainActivity;
    }

    public static void addPackage(String pkg, JSONObject info) {
        PACKAGE_2_ACTIVITY.put(pkg, info);
    }

    public static Map<String, JSONObject> getPackage2Activity() {
        return PACKAGE_2_ACTIVITY;
    }
}

1.3 修改 MainActivity
1.3.1 MainActivity添加变量,存储当前安卓设备的安装应用。
private List localApps = new ArrayList<>();

1.3.2 MainActivity启动后获取安卓设备的安装应用,供其他逻辑使用。
在onCreate方法中添加如下处理:

localApps = getPackageManager().queryIntentActivities(mainIntent, 0);
PackageListCache.setMainActivity(this);
PackageManager pManager = MainActivity.this.getPackageManager();
if (localApps.size() > 0) {
    for (int i = 0; i < localApps.size(); i++) {
        ActivityInfo act = localApps.get(i).activityInfo;
        PackageListCache.addPackage(act.packageName, new JSONObject().fluentPut("name", act.name).fluentPut("label", localApps.get(i).loadLabel(pManager).toString()));
    }
}

1.4 在自定义应用中启动其他应用
String pkgName;//PackageListCache的PACKAGE_2_ACTIVITY中的key,即某个应用的包名

ComponentName componet = new ComponentName(pkgName, list.get(pkgName).getString("name"));
Intent intent = new Intent();
intent.setComponent(componet);
PackageListCache.getMainActivity().startActivity(intent);

在这里插入图片描述

1.5 说明
完成如上设置并启动自定义应用后,再点击系统home键会弹出桌面选项,可将当前自定义应用设置为默认桌面(如果设置为永久桌面,可在设置>应用>当前自定义应用>清除默认设置 来解除永久桌面)。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值