Android7.0 MTK设置默认桌面

 更新时间:2019年07月10日 11:34:40   作者:YHMQ66  
这篇文章主要为大家详细介绍了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>

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

您可能感兴趣的文章:

相关文章

  • Android性能优化之ViewPagers + Fragment缓存优化

    Android性能优化之ViewPagers + Fragment缓存优化

    这篇文章主要介绍了Android性能优化之ViewPagers+Fragment缓存优化,文章围绕主题展开详细的内容介绍,具有一定的参考价值,需要的小伙伴可以参考一下
    2022-08-08
  • flutter 中监听滑动事件

    flutter 中监听滑动事件

    这篇文章主要介绍了flutter 中监听滑动事件,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-11-11
  • Android 下调试手机截屏的方法

    Android 下调试手机截屏的方法

    这篇文章主要介绍了Android 下调试手机截屏的方法的相关资料,希望通过本文大家能掌握这样的功能,需要的朋友可以参考下
    2017-09-09
  • 详解Android 利用Iptables实现网络黑白名单(防火墙)

    详解Android 利用Iptables实现网络黑白名单(防火墙)

    这篇文章主要介绍了详解Android 利用Iptables实现网络黑白名单(防火墙),小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-08-08
  • Android App中用Handler实现ViewPager页面的自动切换

    Android App中用Handler实现ViewPager页面的自动切换

    这篇文章主要介绍了Android App中用Handler实现ViewPager页面的自动切换的方法,类似于相册自动播放,主要是切换后要提示当前页面所在的位置,需要的朋友可以参考下
    2016-05-05
  • ViewPager实现漂亮的引导页

    ViewPager实现漂亮的引导页

    这篇文章主要为大家详细介绍了ViewPager实现漂亮的引导页,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-08-08
  • Android整理需要翻译的strings资源详情

    Android整理需要翻译的strings资源详情

    这篇文章主要介绍了Android整理需要翻译的strings资源,文章主要列出所有res目录,根据是否包含values-ru分成两组解绍,需要的朋友可以参考一下
    2021-10-10
  • Android 通过网络图片路径查看图片实例详解

    Android 通过网络图片路径查看图片实例详解

    这篇文章主要介绍了Android 通过网络图片路径查看图片实例详解的相关资料,需要的朋友可以参考下
    2017-06-06
  • Android开发之App widget用法实例分析

    Android开发之App widget用法实例分析

    这篇文章主要介绍了Android开发之App widget用法,结合实例形式详细分析了Android开发中使用App widget组件的具体步骤与相关技巧,具有一定参考借鉴价值,需要的朋友可以参考下
    2016-06-06
  • Android Handler源码深入探究

    Android Handler源码深入探究

    handler其实就是主线程在起了一个子线程,子线程运行并生成Message,Looper获取message并传递给Handler,Handler逐个获取子线程中的Message
    2022-08-08

最新评论