android 开机不弹出Launcher选择,直接进入需要默认的Launcher,
参考了一下两篇文章:
http://blog.csdn.net/jia4525036/article/details/18036765
http://blog.sina.com.cn/s/blog_4ad8d46c01019zq4.html
由于项目需求更改,在此做保留以后方便使用
在 frameworks/base/core/java/com/android/internal/app/ResolverActivity.java 中作修改
根据需要默认Launcher来设置默认
private void setDefaultLauncher(String defPackageName,String defClassName) { if ((defPackageName != null && defPackageName.trim().length() > 1) && (defClassName != null && defClassName.trim().length() > 0)) { IntentFilter filter = new IntentFilter(); filter.addAction("android.intent.action.MAIN"); filter.addCategory("android.intent.category.HOME"); filter.addCategory("android.intent.category.DEFAULT"); Intent intent=new Intent(Intent.ACTION_MAIN); intent.addCategory(Intent.CATEGORY_HOME); List list = new ArrayList(); list = getPackageManager().queryIntentActivities(intent, 0); final int N = list.size(); ComponentName[] set = new ComponentName[N]; int bestMatch = 0; for (int i=0; i bestMatch) bestMatch = r.match; } ComponentName preActivity = new ComponentName(defPackageName, defClassName); getPackageManager().addPreferredActivity(filter, bestMatch, set,preActivity); }}
在onCreate方法中添加调用
protected void onCreate(Bundle savedInstanceState) { //++++++++++++ boolean firstBoot = (Settings.System.getInt(getApplication().getContentResolver(), Settings.System.DEFAULT_HOME_SETTING_CHANGED, 0) == 0); if(firstBoot){ String defPackageName = "com.panasonic.india.flexuihome"; String defClassName = "com.panasonic.india.flexuihome.Launcher"; setDefaultLauncher(defPackageName,defClassName); android.util.Log.i("deflauncher : ","deflauncher : PackageName = "+ defPackageName+" ClassName = "+defClassName); Intent defIntent = new Intent(); defIntent.setClassName(defPackageName, defClassName); defIntent.setAction("android.intent.action.MAIN"); defIntent.addCategory("android.intent.category.HOME"); defIntent.addCategory("android.intent.category.DEFAULT"); startActivity(defIntent); Settings.System.putInt(getApplication().getContentResolver(), Settings.System.DEFAULT_HOME_SETTING_CHANGED,1); this.finish(); } //++++++++++++ // Use a specialized prompt when we're handling the 'Home' app startActivity() final int titleResource; final Intent intent = makeMyIntent(); final Set categories = intent.getCategories(); if (Intent.ACTION_MAIN.equals(intent.getAction()) && categories != null && categories.size() == 1 && categories.contains(Intent.CATEGORY_HOME)) { titleResource = com.android.internal.R.string.whichHomeApplication; } else { titleResource = com.android.internal.R.string.whichApplication; } onCreate(savedInstanceState, intent, getResources().getText(titleResource), null, null, true);}
DEFAULT_HOME_SETTING_CHANGED的设置
在core/java/android/provider/Settings.java的public static final class System extends NameValueTable{}中添加
public static final String DEFAULT_HOME_SETTING_CHANGED = "default_home_setting_changed";
packages/SettingsProvider/res/values/defaults.xml中添加
packages/SettingsProvider/src/com/android/providers/settings/DatabaseHelper.java
在private void loadSystemSettings(SQLiteDatabase db){}中添加中添加
loadIntegerSetting(stmt, Settings.System.DEFAULT_HOME_SETTING_CHANGED, R.integer.default_launcher_value);
更多相关文章
- Android(安卓)Http请求框架二:xUtils 框架网络请求
- Android(安卓)P WindowManager (一) 直观感受每个window的添加
- Android(安卓)Studio制作简易计算器源代码及详解
- Android(安卓)前置摄像头的默认是180度,导致应用拍照和录制视频是
- 8.1.2 Android中的13种Drawable小结 Part 2
- 设置Android默认锁定屏幕旋转
- EditText常用属性
- 关于CoordinatorLayout展开与折叠相关属性
- Android(安卓)自定义CheckBox 样式