Android7.0 MTK設(shè)置默認(rèn)桌面
本文實(shí)例為大家分享了Android7.0 MTK設(shè)置默認(rèn)桌面的具體代碼,供大家參考,具體內(nèi)容如下
項(xiàng)目需求:客戶安裝自己公司的桌面apk,安裝完成后自動(dòng)設(shè)置為默認(rèn)桌面且不彈出始終和僅一次的彈框
1.找到安裝應(yīng)用的文件
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);
// 由于客戶的應(yīng)用保密 這里使用點(diǎn)心桌面的包名---com.dianxinos.dxhome
if (pkgName.equals("com.dianxinos.dxhome")){
//發(fā)送廣播
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.由于設(shè)置默認(rèn)桌面時(shí),是在Settings中設(shè)置的所以廣播接收者在settings中添加并設(shè)置默認(rèn)桌面(添加文件–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();
// 點(diǎn)心桌面的包名類名 com.dianxinos.dxhome / com.nd.hilauncherdev.launcher.Launcher設(shè)置默認(rèn)桌面
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>
以上就是本文的全部內(nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
Flutter開發(fā)之路由與導(dǎo)航的實(shí)現(xiàn)
這篇文章主要介紹了Flutter開發(fā)之路由與導(dǎo)航的實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2019-12-12
Android 獲取瀏覽器當(dāng)前分享頁面的截屏示例
本篇文章主要介紹了Android 獲取瀏覽器當(dāng)前分享頁面的截屏示例,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2017-02-02
Flutter?Widget?之package?mason實(shí)現(xiàn)詳解
這篇文章主要為大家介紹了Flutter?Widget?之package:?mason實(shí)現(xiàn)詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-11-11
探討:android項(xiàng)目開發(fā) 統(tǒng)籌兼顧 需要考慮的因素
本篇文章是對(duì)基于android項(xiàng)目開發(fā) 統(tǒng)籌兼顧 需要考慮的因素進(jìn)行了詳細(xì)的分析介紹,需要的朋友參考下2013-06-06

