2

画面がオフのときに MainActivity クラスを開きたい。それを行うために、2 つのクラス ScreenReceiver.java を作成して、Screen OFF と Screen ON のインテントを処理します。

public class ScreenReceiver extends BroadcastReceiver {

 private boolean screenOff;

    @Override
    public void onReceive(Context context, Intent intent) {
        if (intent.getAction().equals(Intent.ACTION_SCREEN_OFF)) {
            screenOff = true;
        } else if (intent.getAction().equals(Intent.ACTION_SCREEN_ON)) {
            screenOff = false;
        }
        Intent i = new Intent(context, UpdateService.class);
        i.putExtra("screen_state", screenOff);
        context.startService(i);
    }

}

そして、ScreenReceiver を実装するための UpdateService:

public  class UpdateService extends Service {

@Override
public void onCreate() {
    super.onCreate();
    // register receiver that handles screen on and screen off logic
    IntentFilter filter = new IntentFilter(Intent.ACTION_SCREEN_ON);
    filter.addAction(Intent.ACTION_SCREEN_OFF);
    BroadcastReceiver mReceiver = new ScreenReceiver();
    registerReceiver(mReceiver, filter);
}

public void onStart(Context context, Intent intent, int startId) {
    boolean screenOn = intent.getBooleanExtra("screen_state", false);
    if (!screenOn) {
        // your code
         Intent intent11 = new Intent(context,MainActivity.class);
         intent11.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
         context.startActivity(intent11);
    } else {
        // your code
        Intent intent11 = new Intent(context,MainActivity.class);
        intent11.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
    }
}

@Override
public IBinder onBind(Intent intent) {
    // TODO Auto-generated method stub
    return null;
}

}

そのため、アプリをインストールすると、画面がオフのときにイベントが発生しません。問題を見せてください。

4

2 に答える 2

0

アプリケーションのどこかでフォアグラウンドで UpdateService を開始しましたか??

于 2013-02-19T14:54:34.207 に答える