安卓 linux launcher,Android设置Launcher App

1、应用设置

在应用的AndroidManifest.xml文件中的作为Home界面的Activity的intent-filter节点中添加如下代码:

2、打包设置

将应用打包成build版本,将apk复制到/system/priv-app/应用名称的文件夹/中,查看apk中有没有so文件,如果有,将so文件复制到/system/lib/中,并在apk同级目录中新建/lib/arm/文件夹,创建刚刚导入os文件的软链接。

3、修改源代码

frameworks/base/core/java/com/android/internal/app/ResolverActivity.java

3.1 在ResolveListAdapter中添加getDefaultHomePosition(String packageName)方法,用于获取默认home app在List 中的位置,代码如下:

61b26cc39367

code.png

3.2 在ResolverActivity中添加设置默认app的方法setupDefaultLauncher(),代码如下:

//用于记录默认home app是否设置过

private static final String DEFAULT_HOME = " home app包名";

private void setupDefaultLauncher() {

String first = "";

try{

first = SystemProperties.get(DEFAULT_HOME);

}catch(Exception e){

Log.w(TAG,"exception error get DEFAULT_HOME");

}

//判断默认home 是否设置过,如果获取的字符串为空代表,未设置,否则return不在进行设置

if (!TextUtils.isEmpty(first)) {

return;

}

//使用包名获取所需设置的默认home app在ResolveListAdapter中的位置

int position = mAdapter.getDefaultHomePosition("home app包名");

//如果不存在则return

if (position == -1) {

if (DEBUG)

Log.w(TAG,"not find default Home");

return;

}

//设置默认home app后,则添加记录

try{

SystemProperties.set(DEFAULT_HOME,DEFAULT_HOME);

}catch(Exception e){

Log.w(TAG,"exception error set DEFAULT_HOME");

}

//设置默认home app,并跳转

startSelected(position, true, true);

//结束此activity

dismiss();

}

3.3 为了保证mAdapter被初始化 setupDefaultLauncher()的调用添加到ResolverActivity的onCreate函数中,代码如下:

int count = mAdapter.mList.size();

//添加的代码

setupDefaultLauncher();

//原有逻辑

//如果系统中home app大于1

if (count > 1 || (count == 1 && mAdapter.getOtherProfile() != null)) {

//初始化代码

.........

//如果home app等于1则设置唯一的home app为Home

} else if (count == 1) {

........

}

4 编译framework代码

$cd framework/base

$mm

执行如下命令:

$adb remount

$adb push framework-res.apk /system/framework/

$adb push framework.jar /system/framework/

$adb push services.jar /system/framework/ (如果有修改的话)

以命令

注意:有的系统编译framework后还生成了secondary_framework.jar,也需要push。

5 运行

make snod生成新的system.img,然后使用adb进行刷机。

6 需要注意的问题:

6.1 Android应用里面通过gradle引用的第三方库中如果含有so库,也需要将这些文件拷贝到/system/lib文件中

6.2 可以使用git Bush查看so文件是32位还是64位,决定放进/system/lib还是/system/lib64中,命令为file *

6.3 查看应用中使用到的so文件可以通过解压apk文件,查看里面的libs文件夹中的文件。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值