因为广电发文,各种限制android系统的自由度,种种缘由,项目需要做个“掩人耳目”的动作。那就是在android系统平台中需要预制两个Launcher,一个"干净"的,没有任何定制特色的原生launcher,另一个则是“多元”的定制的launcher。在出厂时,系统为干净launcher,出厂后,用户自己可以采用U盘激活“多元”定制Launcher。
根据思路,目前要实现的模块是:
1.U盘中存放一个激活KEY。
2.出厂时,开机Launcher中本身需预装两个Launcher,并且按home键,不可以弹出选择启动项框。出厂时使用干净Launcher。
3.当插入U盘后检测到有激活KEY值时,开机启动定制Launcher,并设置为默认值。
第一步,U盘放激活KEY,这个当然是越简单越好,所以直接定一个文件夹,文件夹中放一个txt格式的文件,里面写上字串,自编。目前我建的路径是:“\LauncherKey\key.txt”文本里写的是:“123456789”。(字串和路径一定要考虑好,代码中是直接做完全匹配验证的)预先准备好测试的U盘。
第二步, 准备两个可以正常运行的Launcher,注意加上Launcher的
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.MONKEY" />
<category android:name="android.intent.category.FIRSTHOME" /><!--这个是自定义的Launcher,很多资料都有讲解怎么设置自定义Launcher-->
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
第三步,在检测U盘的应用中,例如,FileBrower.apk源码中,加上:
package com.fb.FileBrower;
import java.io.BufferedInputStream;
import java.io.BufferedReader;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.UnsupportedEncodingException;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.content.SharedPreferences;
import android.os.SystemClock;
import android.util.Log;
import android.widget.Toast;
/**
* Created by liuwenchang on 14-2-13.
*/
public class MountReceiver extends BroadcastReceiver {
private static final String TAG = "MountReceiver";
private static final String ACTION_BOOT_COMPLETED = "android.intent.action.BOOT_COMPLETED";
private static final String ACTION_MEDIA_MOUNTED = "android.intent.action.MEDIA_MOUNTED";
private static boolean life = false;
private Context mContext;
private SharedPreferences sharedPreferences;
private SharedPreferences.Editor editor;
@Override
public void onReceive(Context context, Intent intent) {
mContext = context;
String action = intent.ge