我目前正在使用自定义 AlertDialog,它在 Activity 中具有 Theme.Dialog 主题,需要用户输入当前密码才能继续。
根据Android - 是否可以禁用单击主页按钮我已经尝试了大多数方法,但它不起作用。
活动 - onCreate
SharedPreferences sp = PreferenceManager.getDefaultSharedPreferences(PhysicalTheftDialog.this);
boolean isServerRunning = sp.getBoolean("isServerRunning", false);
if (isServerRunning == false) {
startService(new Intent(PhysicalTheftDialog.this, MyService.class));
}
else {
sp.getBoolean("isServerRunning", true);
}
服务
@Override
public void onCreate() {
/* //Toast.makeText(this, "My Service Created", Toast.LENGTH_LONG).show();
Log.d(TAG, "onCreate");
player = MediaPlayer.create(this, R.raw.braincandy);
player.setOnPreparedListener(this);
try {
player.prepareAsync();
} catch (Exception e) {
Log.e(TAG, "", e);
}
player.setLooping(true); // Set looping*/
this.context = getApplicationContext();
//Toast.makeText(this, "My Service Created", Toast.LENGTH_LONG).show();
SharedPreferences sp = PreferenceManager.getDefaultSharedPreferences(this);
boolean isServerRunning = sp.getBoolean("isServerRunning", true);
while (!isServerRunning) {
// THAT CODE: check if activity is on the top
Handler handler = new Handler();
handler.postDelayed(new Runnable() {
public void run() {
// get a list of running processes and iterate through them
ActivityManager activityManager = (ActivityManager)context.getSystemService(Activity.ACTIVITY_SERVICE);
// get the info from the currently running task
List<ActivityManager.RunningTaskInfo> taskInfo = activityManager.getRunningTasks(1);
ComponentName componentInfo = taskInfo.get(0).topActivity;
// if top activity is not "MyActivity" activity, then launch it
if("nyp.android.project".equals(componentInfo.getClassName()) == false) {
Intent intent = new Intent(MyService.this, PhysicalTheftDialog.class);
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(intent);
}
}
}, 2000);
boolean serviceStatus = sp.getBoolean("isServerRunning", false);
}
}
日志猫
E/AndroidRuntime( 9799): FATAL EXCEPTION: main
E/AndroidRuntime( 9799): java.lang.RuntimeException: Unable to start service nyp.android.project.MyService@41b29ff0 with Intent { cmp=xxxx }: java.lang.NullPointerException
E/AndroidRuntime( 9799): at android.app.ActivityThread.handleServiceArgs(ActivityThread.java:2387)
E/AndroidRuntime( 9799): at android.app.ActivityThread.access$1900(ActivityThread.java:127)
E/AndroidRuntime( 9799): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1221)
E/AndroidRuntime( 9799): at android.os.Handler.dispatchMessage(Handler.java:99)
E/AndroidRuntime( 9799): at android.os.Looper.loop(Looper.java:137)
E/AndroidRuntime( 9799): at android.app.ActivityThread.main(ActivityThread.java:4511)
E/AndroidRuntime( 9799): at java.lang.reflect.Method.invokeNative(Native Method)
E/AndroidRuntime( 9799): at java.lang.reflect.Method.invoke(Method.java:511)
E/AndroidRuntime( 9799): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:980)
E/AndroidRuntime( 9799): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:747)
E/AndroidRuntime( 9799): at dalvik.system.NativeStart.main(Native Method)
E/AndroidRuntime( 9799): Caused by: java.lang.NullPointerException
E/AndroidRuntime( 9799): at nyp.android.project.MyService.onStart(MyService.java:95)
E/AndroidRuntime( 9799): at android.app.Service.onStartCommand(Service.java:438)
E/AndroidRuntime( 9799): at android.app.ActivityThread.handleServiceArgs(ActivityThread.java:2370)
E/AndroidRuntime( 9799): ... 10 more