的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