Android7.0 MTK设置默认桌面
作者:YHMQ66 发布时间:2023-09-26 12:30:43
标签:Android,7.0,MTK,默认桌面
本文实例为大家分享了Android7.0 MTK设置默认桌面的具体代码,供大家参考,具体内容如下
项目需求:客户安装自己公司的桌面apk,安装完成后自动设置为默认桌面且不弹出始终和仅一次的弹框
1.找到安装应用的文件
frameworks\base\services\core\java\com\android\server\pm\PackageManagerService.java
try {
PackageParser.Package newPackage = scanPackageTracedLI(pkg, policyFlags, scanFlags,
System.currentTimeMillis(), user);
updateSettingsLI(newPackage, installerPackageName, null, res, user);
if (res.returnCode == PackageManager.INSTALL_SUCCEEDED) {
prepareAppDataAfterInstallLIF(newPackage);
Log.d("yh", "pkgName " +pkgName);
// 由于客户的应用保密 这里使用点心桌面的包名---com.dianxinos.dxhome
if (pkgName.equals("com.dianxinos.dxhome")){
//发送广播
Intent intent = new Intent("android.intent.action.UPDATE_LANUCHER_APPS");
mContext.sendBroadcast(intent);
}
//------------------------
} else {
// Remove package from internal structures, but keep around any
// data that might have already existed
deletePackageLIF(pkgName, UserHandle.ALL, false, null,
PackageManager.DELETE_KEEP_DATA, res.removedInfo, true, null);
}
} catch (PackageManagerException e) {
res.setError("Package couldn't be installed in " + pkg.codePath, e);
}
Trace.traceEnd(TRACE_TAG_PACKAGE_MANAGER);
}
2.由于设置默认桌面时,是在Settings中设置的所以广播接收者在settings中添加并设置默认桌面(添加文件–packages\apps\Settings\src\com\android\settings下—UpdateLanucherReceiver.java)
package com.android.settings;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.content.ComponentName;
import android.content.IntentFilter;
import android.content.pm.PackageManager;
import android.content.pm.ResolveInfo;
import java.util.ArrayList;
import android.util.Log;
import android.content.pm.ActivityInfo;
import java.util.List;
public class UpdateLanucherReceiver extends BroadcastReceiver {
public UpdateLanucherReceiver() {
}
@Override
public void onReceive(Context context, Intent intent) {
if (intent.getAction().equals("android.intent.action.UPDATE_LANUCHER_APPS")) {
Log.e("yhyh" ," onReceive");
final PackageManager mPm = context.getPackageManager();
// 点心桌面的包名类名 com.dianxinos.dxhome / com.nd.hilauncherdev.launcher.Launcher设置默认桌面
ComponentName DefaultLauncher=new ComponentName(" com.dianxinos.dxhome",
"com.nd.hilauncherdev.launcher.Launcher");
ArrayList<ResolveInfo> homeActivities = new ArrayList<ResolveInfo>();
ComponentName currentDefaultHome = mPm.getHomeActivities(homeActivities);
ComponentName[]mHomeComponentSet = new ComponentName[homeActivities.size()];
for (int i = 0; i < homeActivities.size(); i++) {
final ResolveInfo candidate = homeActivities.get(i);
Log.e("yhyh","homeActivitie: candidate = "+candidate);
final ActivityInfo activityInfo= candidate.activityInfo;
ComponentName activityName = new ComponentName(activityInfo.packageName, activityInfo.name);
mHomeComponentSet[i] = activityName;
}
IntentFilter mHomeFilter = new IntentFilter(Intent.ACTION_MAIN);
mHomeFilter.addCategory(Intent.CATEGORY_HOME);
mHomeFilter.addCategory(Intent.CATEGORY_DEFAULT);
List<ComponentName>Activities=new ArrayList();
mPm.replacePreferredActivity(mHomeFilter, IntentFilter.MATCH_CATEGORY_EMPTY,mHomeComponentSet, DefaultLauncher);
//刷新桌面
Intent intent2 = new Intent(Intent.ACTION_MAIN);
intent2.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
intent2.addCategory(Intent.CATEGORY_HOME);
context.startActivity(intent2);
}
}
}
3.packages\apps\Settings\AndroidManifest.xml
<!-- yh -->
<receiver
android:name=".UpdateLanucherReceiver" >
<intent-filter>
<action android:name="android.intent.action.UPDATE_LANUCHER_APPS" />
</intent-filter>
</receiver>
来源:https://blog.csdn.net/YHMQ66/article/details/92784266
0
投稿
猜你喜欢
- 成为一名优秀的软件开发工程师,设计模式的重要性不言而喻,本章节是对设计模式的前置知识概述,涉及概念性较大,读者可在设计模式学习过程中参阅本文
- 沉浸式状态栏的来源就是很多手机用的是实体按键,没有虚拟键,于是开了沉浸模式就只有状态栏消失了。于是沉浸模式成了沉浸式状态栏。我们先来看下具体
- 一、前言在java中,和C语言一样,也有关于字符串的定义,并且有他自己特有的功能,下面我们一起来学习一下。二、String类概述string
- 在Flutter中实现整个App变为灰色是非常简单的,只需要在最外层的控件上包裹ColorFiltered,用法如下:@overrideWi
- 本文实例为大家分享了C#生成PDF文件流的具体代码,供大家参考,具体内容如下1、设置字体static BaseFont FontBase =
- 目录1)在程序集中添加资源2)在程序集中查找资源这一篇单独拿出来分析这个程序集资源,为的就是不想让大家把程序集资源和exe程序强关联,因为程
- 首先我将贴出几种实现圆角边框的dmeo程序效果图:方式一:使用shape元素填充背景,设置圆角/带弧度的角1、首先在 \res\drawab
- 前言在上一篇中,我们初步了解了Sentinel的基本概念,以及其有关限流方面的基础理论,本篇将通过简单的与框架进行整合,看看Sentinel
- 哈喽大家好啊,我是Hydra。Spring作为项目中不可缺少的底层框架,提供的最基础的功能就是bean的管理了。bean的注入相信大家都比较
- 使用 AppbarLayout 和 MotionLayout 实现常用的布局效果前文我们讲了协调滚动的一些定义方式,我们在开发中常用的几种效
- 什么是tcpTcp通信有两个特点分别是面向连接,具有可靠性.面向连接:指的是客户端与服务端之间的连接,在通信之前会有三次握手的机制来确保连接
- 写在前面在这里,我们将会学习怎么利用java8 快速的打印出需要打印的元素利用stream打印元素在Java中,有三种不同的方法来打印Jav
- 不想废话,直接写了!因为是留给自己做随笔的,所以大神们看到别喷…… 1.必须有微信公众账号 2.你也可以申请测试微信号,
- 部分同学在使用 idea 时可能会遇到输入 sout 无法出现自动补全 System.out.println();的情况,其实 idea 默
- 可以理解当我们要调用一个方法时,我们会把指定的数值,传递给方法中的参数,这样方法中的参数就拥有了这个指定的值,可以使用该值,在方法中运算了。
- 前言我们之前实现了打包发布NuGet,但是发布后的引用是公有的,谁都可以访问,显然这种方式是不可取的。命令版本:10分钟学会Visual S
- classpath读取resources目录下文件最近在springboot+maven的项目中去读取资源文件的时候,报了找不到文件的错误。
- 在上一篇博文《C/C++ Qt TreeWidget 单层树形组件应用》中给大家演示了如何使用TreeWidget组件创建单层树形结构,并给
- 以前使用spring的使用要注入property要配置PropertyPlaceholder的bean对象。在springboot除&nbs
- 本文内容介绍通过Java程序在Excel表格中根据数据来创建透视表。环境准备需要使用Excel类库工具—Free Spire.XLS for