失眠网,内容丰富有趣,生活中的好帮手!
失眠网 > Android7.0 MTK 设置默认桌面

Android7.0 MTK 设置默认桌面

时间:2020-02-02 05:39:56

相关推荐

Android7.0  MTK 设置默认桌面

项目需求:客户安装自己公司的桌面apk,安装完成后自动设置为默认桌面且不弹出始终和仅一次的弹框

1.找到安装应用的文件

frameworks\base\services\core\java\com\android\server\pm\PackageManagerService.javatry {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.dxhomeif (pkgName.equals("com.dianxinos.dxhome")){//发送广播Intent intent = newIntent("android.intent.action.UPDATE_LANUCHER_APPS");mContext.sendBroadcast(intent);}//------------------------} else {// Remove package from internal structures, but keep around any// data that might have already existeddeletePackageLIF(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 ponentName;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() {}@Overridepublic 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 --><receiverandroid:name=".UpdateLanucherReceiver" ><intent-filter><action android:name="android.intent.action.UPDATE_LANUCHER_APPS" /></intent-filter></receiver>

如果觉得《Android7.0 MTK 设置默认桌面》对你有帮助,请点赞、收藏,并留下你的观点哦!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。