当屏幕关闭时重新启动应用程序
问题描述:
当用户触摸屏幕时,我的应用程序正在完成。对于这一点,在onTouch()方法,我有当屏幕关闭时重新启动应用程序
Intent intent = new Intent(getBaseContext(), FinActivity.class);
intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
startActivity(intent);
finish();
其中FinActivity类是这个:
public class FinActivity extends Activity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
this.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);
IntentFilter filter = new IntentFilter(Intent.ACTION_SCREEN_ON);
filter.addAction(Intent.ACTION_SCREEN_OFF);
BroadcastReceiver mReceiver = new AlarmReceiver();
registerReceiver(mReceiver, filter);
Intent intent = new Intent(this, AlarmReceiver.class);
PendingIntent pendingIntent = PendingIntent.getBroadcast(
this.getApplicationContext(), 234324243, intent, 0);
AlarmManager alarmManager = (AlarmManager) getSystemService(ALARM_SERVICE);
alarmManager.setRepeating(AlarmManager.RTC_WAKEUP,
System.currentTimeMillis() + (60 * 1000),
System.currentTimeMillis() + (60 * 1000), pendingIntent);
finish();
}
我要重新启动我的应用程序时,屏幕关闭。我有这个AlarmReceiver类:
public class AlarmReceiver extends BroadcastReceiver {
public static boolean wasScreenOn = true;
@Override
public void onReceive(Context context, Intent intent) {
if (intent.getAction().equals(Intent.ACTION_SCREEN_OFF)) {
// do whatever you need to do here
System.out.println("Screen OFF");
wasScreenOn = false;
Intent i = new Intent(context, SplashScreen.class);
i.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
context.startActivity(i);
} else if (intent.getAction().equals(Intent.ACTION_SCREEN_ON)) {
// and do whatever you need to do here
System.out.println("Screen ONN");
wasScreenOn = true;
}
}
}
但60秒后我在这行得到NullPointerException异常:intent.getAction().equals(Intent.ACTION_SCREEN_OFF)
哪里是我的错?我做错了什么?
在此先感谢。
答
如果你只是想知道你的屏幕是否开启或关闭,您可以使用Android的PowerManager的类它是从API 1级。你可以使用isScreenOn()方法知道的状态屏幕。
您可以在这里获取更多详细信息http://developer.android.com/reference/android/os/PowerManager.html。
如果你检查一个'Intent'并忽略它,它会工作吗? – Glitch 2012-01-16 13:41:05
它在没有if条件的情况下重新启动应用程序。 – Gabrielle 2012-01-16 13:50:22