Android7.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>

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我们。

(0)

相关推荐

  • MTK Android平台开发流程

    本篇给大家详细讲解了MTKAndroid平台开发流程,大致分为44个步骤,我们把每个步骤的命令详细讲解了下,一起来学习下. 1.拷贝代码仓库从git@192.168.1.3:a89.git到work目录下: cbk@YCS:~/work$ll cbk@YCS:~/work$rm-rfa89/ cbk@YCS:~/work$cd.. cbk@YCS:~/work$gitclonegit@192.168.1.3:a89.git 2.修改xshell用户密码:passwd 3.Android查看源代码

  • Android7.0 MTK设置默认桌面

    本文实例为大家分享了Android7.0 MTK设置默认桌面的具体代码,供大家参考,具体内容如下 项目需求:客户安装自己公司的桌面apk,安装完成后自动设置为默认桌面且不弹出始终和仅一次的弹框 1.找到安装应用的文件 frameworks\base\services\core\java\com\android\server\pm\PackageManagerService.java try { PackageParser.Package newPackage = scanPackageTrace

  • android Launcher3设置默认桌面应用

    android Launcher3 设置默认桌面应用,供大家参考,具体内容如下 launcher3 的默认桌面应用是在 res/xml里 默认有4种样式 default_workspace_3x3.xml default_workspace_4x4.xml default_workspace_5x5.xml default_workspace_5x6.xml 我们看看default_workspace_3x3.xml <?xml version="1.0" encoding=&q

  • 详解在Tomcat7.0中设置默认服务器和不加端口名访问

    最近申请了一个域名,想尝试一下关联自己的服务器,首先要做的就是在阿里云上申请一个域名,此操作不写,跟着网站提示就可以搞定. 准备条件,新建web项目,部署到tomcat7.0服务器上,所用工具为Eclipse. 第一步:设置WEB项目的欢迎页 在WEB-INF文件夹下有个web.xml文件(最近新建的项目不包含此文件,可以手动新建),在welcome-file-list节点中设置,代码如下 <welcome-file-list> <welcome-file>test.html<

  • Android设置默认锁屏壁纸接口的方法

    本文实例为大家分享了Android设置默认锁屏壁纸接口的具体代码,供大家参考,具体内容如下 完成自定义service后,接下来就是具体实现接口 1.在frameworks/base/core/java/android/app/customized/ICustomizedService.aidl中定义接口 boolean setLockScreenWallpaper(String uri); 2.在frameworks/base/core/java/android/app/customized/C

  • Android7.0 工具类:DiffUtil详解

    一 概述 DiffUtil是support-v7:24.2.0中的新工具类,它用来比较两个数据集,寻找出旧数据集->新数据集的最小变化量. 说到数据集,相信大家知道它是和谁相关的了,就是我的最爱,RecyclerView. 就我使用的这几天来看,它最大的用处就是在RecyclerView刷新时,不再无脑mAdapter.notifyDataSetChanged(). 以前无脑mAdapter.notifyDataSetChanged()有两个缺点: 1.不会触发RecyclerView的动画(删

  • Android7.0开发实现Launcher3去掉应用抽屉的方法详解

    本文实例讲述了Android7.0开发实现Launcher3去掉应用抽屉的方法.分享给大家供大家参考,具体如下: 年初做过一个项目,有一个需求就是需要将桌面变为单层不需要二级菜单.最近几次有小伙伴有这个问我这个解决办法.现在我将分享给大家. 先上效果图:   功能分解 1. 去除Allapp键,调整HotSeat布局 2. 将所有应用摆在launcher第一层 3. 去掉长按时删除选项 解决方案 一.设置总开关 按照6.0 Launcher3 的模式,添加一个开关,控制是否去掉抽屉. Launc

  • Android7.0版本影响开发的改进分析

    本文总结分析了Android7.0版本影响开发的改进.分享给大家供大家参考,具体如下: 低电耗模式 会对闹铃.GPS 和 Wi-Fi 扫描 产生限制. 可参考Optimizing for Doze and App Standby 使用GCM来发送和接受消息 后台优化 Android N 删除了三项隐式广播,隐式广播会在后台频繁启动已注册侦听这些广播的应用. 删除这些广播可以显著提升设备性能和用户体验. 侦听网络变化的主线程广播改为: CONNECTIVITY_CHANGE. 对所有应用都无法 发

  • 快速解决Android7.0下沉浸式状态栏变灰的问题

    1.绪论 现在基本上所有的应用都会去实现沉浸式状态栏,这个是应用的标配,如果你开发的应用没有,那这个吐槽点就多了,"这美工有审美观么""程序猿这么菜,沉浸式都不会?"-.. 咳咳-.. 开个玩笑啊,各有各的设计思想,不能怪程序猿. 2.问题 那么说到沉浸式状态栏的问题是什么呢?不知道大家有没有遇到过,应用在android7.0系统以下的手机上运行,沉浸式状态栏是正常的,但是在7.0以上的手机上运行就感觉没有沉浸式了,是分层的.无论怎么修改状态栏背景色都没用,看下图:

  • 解密FCKeditor 2.0 的设置.修改.使用方法

    今天找了下fckeditor的修改方法,因为他的代码太乱了,比ewebeditor的易用性与可修改型确实太差了,只要求助各位网友的以前的修改方法,方便修改FCKeditor 2.0版终于出来了,之所以用"终于"这个词,是因为在这一版本上加上了众望所归的FLASH插入功能.可以说在所有的在线编辑器中,FCKeditor是目前互联网上最好的编辑器,功能强大,支持多种浏览器,无平台限制,可以和多种WEB语言融合,多语言支持,开源等~~ 对于一个全新的网站,FCKeditor就可以直接拿过来用

  • JavaScript实现设置默认日期范围为最近40天的方法分析

    本文实例讲述了JavaScript实现设置默认日期范围为最近40天的方法.分享给大家供大家参考,具体如下: 前面文章<JavaScript输出所选择起始与结束日期的方法>中的例子实现了选择日期,然后把选择的日期输出,这么一个功能. 不过实际项目中,测试人员说客户的需求是点击进入页面后,自动查询最近40天的数据. 想了想,实现的原理就是在页面加载之后,调用一个JavaScript函数设置日期,相比上一篇文章,除了修改了部分格式,还增加了onload函数. 另外,虽然把日期转为字符串可以用标准函数

随机推荐