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 WebView组件使用总结

    android WebView组件使用总结

    浏览器控件是每个开发环境都具备的,这为马甲神功提供了用武之地,windows的有webbrowser,android和ios都有webview;本篇主要介绍android的webview之强大,感兴趣的朋友可以研究下
    2012-12-12
  • Flutter开发之路由与导航的实现

    Flutter开发之路由与导航的实现

    这篇文章主要介绍了Flutter开发之路由与导航的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-12-12
  • Android使用广播发送消息

    Android使用广播发送消息

    这篇文章主要为大家详细介绍了Android使用广播发送消息,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-04-04
  • Android 获取浏览器当前分享页面的截屏示例

    Android 获取浏览器当前分享页面的截屏示例

    本篇文章主要介绍了Android 获取浏览器当前分享页面的截屏示例,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-02-02
  • Android获取屏幕方向及键盘状态的小例子

    Android获取屏幕方向及键盘状态的小例子

    很多开发Android的网友可能需要判断当前的屏幕方向或键盘状态,下面的代码可以判断出横屏landscape和常规的portrait纵握方式,如果使用的是G1这样有QWERTY键盘硬件的,还可以判断屏幕方向以及键盘的拉出状态。
    2013-05-05
  • Flutter 日历组件简单实现

    Flutter 日历组件简单实现

    这篇文章主要为大家介绍了Flutter 日历组件简单实现的图文示例详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-08-08
  • Flutter Widget 之package mason实现详解

    Flutter Widget 之package mason实现详解

    这篇文章主要为大家介绍了Flutter Widget 之package: mason实现详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-11-11
  • 探讨:android项目开发 统筹兼顾 需要考虑的因素

    探讨:android项目开发 统筹兼顾 需要考虑的因素

    本篇文章是对基于android项目开发 统筹兼顾 需要考虑的因素进行了详细的分析介绍,需要的朋友参考下
    2013-06-06
  • 深入理解Android M 锁屏密码存储方式

    深入理解Android M 锁屏密码存储方式

    下面小编就为大家带来一篇深入理解Android M 锁屏密码存储方式。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-04-04
  • Android APP瘦身(清除工程中没用到的资源)详解

    Android APP瘦身(清除工程中没用到的资源)详解

    这篇文章主要介绍了Android 清除工程中没用到的资源详解的相关资料,这里举例说明如何实现,需要的朋友可以参考下
    2016-11-11

最新评论