的efective的解决方案,并在这里是从作者的观点
public class MonitorService extends Service {
private Handler handler;
Runnable runnable;
@Override
public void onCreate() {
// TODO Auto-generated method stub
super.onCreate();
handler = new Handler();
runnable = new Runnable() {
@Override
public void run() {
new Thread(new Runnable() {
@Override
public void run() {
ActivityManager am = (ActivityManager) getSystemService(Context.ACTIVITY_SERVICE);
List<ActivityManager.RunningTaskInfo> taskInfo = am
.getRunningTasks(1);
ComponentName componentInfo = taskInfo.get(0).topActivity;
String currentActivityName=componentInfo.getClassName();
String packageName=componentInfo.getPackageName();
if(whitelist.contains(currentActivityName)){
Intent launchIntent = new Intent();
launchIntent.setComponent(new ComponentName(blockActivityPackageName,
blockActivityName));
launchIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(launchIntent);
}
}
}).start();
handler.postDelayed(this, 1000);
}
};
handler.postDelayed(runnable, 1000);
}
@Override
public void onStart(Intent intent, int startId) {
super.onStart(intent, startId);
}
@Override
public IBinder onBind(Intent intent) {
return null;
}
@Override
public void onDestroy() {
super.onDestroy();
Intent intent = new Intent(this, MonitorService.class);
startService(intent);
}
@Override
public int onStartCommand(Intent intent, int flags, int startId) {
return START_STICKY;
}
我只想补充一点,这款手机和相关应用程序将永远不会向公众发布的代码;它只是内部的。如果有人有一个外面的答案,我也会很感激。 – WorkerThread 2011-03-02 15:00:59
好问题。我很好奇自己。 – 2011-03-02 15:05:06
如何编写自定义启动器只显示允许的应用程序? (您需要锁定Android电子市场,因为用户可以从市场内开始安装应用程序) – TomTasche 2011-03-02 16:02:46