软件编程
位置:首页>> 软件编程>> Android编程>> Android7.0 MTK设置默认桌面

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
手机版 软件编程 asp之家 www.aspxhome.com