- **版权声明: **本博客所有文章除特别声明外,均采用 CC BY 4.0 CN协议 许可协议。转载请注明出处!
前言
曾几何时,我也喜欢嘟嘟桌面,奈何嘟嘟桌面越来越卡,奈何车机性能的限制,也只能在原厂桌面上想办法 总说周知,原厂桌面只能显示应用商店安装过的应用,然而应用商店无法实现个性化,搜,只能反编译看看原厂桌面的代码查找突破口
干正事
(此处省略大部分代码,惋惜我的头发)
javascript
#用户安装的app 控制显示
.field private static final SP1_NAME:Ljava/lang/String; = "userappicon"
#系统版本号
.field private static final SPFORVERSION_NAME:Ljava/lang/String; = "systemversion"
#系统通知
.field private static final SP_NAME:Ljava/lang/String; = "notification"
#添加可显示在桌面上的包名
.method public addUserAppIcon(Ljava/lang/String;Z)V
.locals 1
.param p1, "packageName" # Ljava/lang/String;
.param p2, "exsist" # Z
.line 56
sget-object v0, Lcom/gaei/launcher/SharedPreferencesHelper;->editor1:Landroid/content/SharedPreferences$Editor;
invoke-interface {v0, p1, p2}, Landroid/content/SharedPreferences$Editor;->putBoolean(Ljava/lang/String;Z)Landroid/content/SharedPreferences$Editor;
.line 57
sget-object v0, Lcom/gaei/launcher/SharedPreferencesHelper;->editor1:Landroid/content/SharedPreferences$Editor;
invoke-interface {v0}, Landroid/content/SharedPreferences$Editor;->commit()Z
.line 58
return-void
.end method
#判断包名是否存在于配置中
.method public getAppIsExsisted(Ljava/lang/String;)Z
.locals 3
.param p1, "packageName" # Ljava/lang/String;
.line 77
const/4 v0, 0x0
.line 78
.local v0, "isExsisted":Z
sget-object v1, Lcom/gaei/launcher/SharedPreferencesHelper;->sp1:Landroid/content/SharedPreferences;
if-eqz v1, :cond_0
.line 79
sget-object v1, Lcom/gaei/launcher/SharedPreferencesHelper;->sp1:Landroid/content/SharedPreferences;
const/4 v2, 0x0
invoke-interface {v1, p1, v2}, Landroid/content/SharedPreferences;->getBoolean(Ljava/lang/String;Z)Z
move-result v0
.line 81
:cond_0
return v0
.end method
#从配置中移除包名
.method public removeUserAppIcon(Ljava/lang/String;)V
.locals 1
.param p1, "packageName" # Ljava/lang/String;
.line 108
sget-object v0, Lcom/gaei/launcher/SharedPreferencesHelper;->editor1:Landroid/content/SharedPreferences$Editor;
invoke-interface {v0, p1}, Landroid/content/SharedPreferences$Editor;->remove(Ljava/lang/String;)Landroid/content/SharedPreferences$Editor;
.line 109
sget-object v0, Lcom/gaei/launcher/SharedPreferencesHelper;->editor1:Landroid/content/SharedPreferences$Editor;
invoke-interface {v0}, Landroid/content/SharedPreferences$Editor;->commit()Z
.line 110
return-void
.end method主要方法为getAppIsExsisted和removeUserAppIcon getAppIsExsisted中会返回true/false表示是否存在,此处需要修改返回值,让其永恒返回成true removeUserAppIcon则删除配置,此处我们把方法体内的代码去掉即可 重新打包签名后即可安装
探索其他方式
有人会说,我喜欢原汁原味的,我不想动原厂的桌面,有没有其他办法实现呢?其实是有的 通过上面反编译后得知,控制应用显示的配置其实是userappicon,那么我们可以通过外挂app的方式进行控制 外挂app核心代码:
javascript
try {
Context launcherContext = null;
try {
// 获取其他程序对应的Context
launcherContext = createPackageContext("com.gaei.launcher",
Context.CONTEXT_IGNORE_SECURITY);
} catch (PackageManager.NameNotFoundException e) {
e.printStackTrace();
Toast.makeText(getApplicationContext(), "无法获取launcherContext"+e.getMessage(),
Toast.LENGTH_LONG).show();
return;
}
// 使用其他程序的COntext获取对应的SharedPreferences
SharedPreferences sharedPreferences = launcherContext.getSharedPreferences("userappicon",
Context.MODE_WORLD_WRITEABLE);
if (sharedPreferences!=null)
{
Toast.makeText(getApplicationContext(), "成功读取!!",
Toast.LENGTH_LONG).show();
SharedPreferences.Editor userAppIconEdit = sharedPreferences.edit();
userAppIconEdit.putBoolean("com.chenmo.gaei.box", true); //com.chenmo.gaei.box为你所需要添加的包名
userAppIconEdit.apply();
Toast.makeText(getApplicationContext(), "添加成功",Toast.LENGTH_LONG).show();
}
}catch (Exception ex)
{
Toast.makeText(getApplicationContext(), "无法获取launcherContext"+ex.getMessage(),
Toast.LENGTH_LONG).show();
}下载与安装、卸载
- 安装了破解版的应用商店可直接在应用商店更新 原厂桌面
- 安装有RE之类管理器的,可直接下载apk进行安装 下载
- 未安装RE类管理器的,请联系我提供代理进行安装
卸载
设置->车辆信息(长按)->应用->应用商店/系统更新/启动器->卸载更新