软件编程
位置:首页>> 软件编程>> 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
投稿

猜你喜欢

手机版 软件编程 asp之家 www.aspxhome.com