0

こんにちは友人私は問題があります...実際に私は特定の時間に私のアプリケーションを開くためにこのコードを使用します..アプリは正常に動作していますが、デバイスがスリープモードにあるときは動作しません.. ??

public class MyBroadCastReceiver extends BroadcastReceiver {

    @Override
    public void onReceive(Context ctx, Intent intent) {
        Intent intent = new Intent(ctx, ActivityMain.class);
        intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
        intent.addFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP);
        ctx.startActivity(intent);
    }

}

ActivityMain.java

intent = new Intent(getBaseContext()、MyBroadCastReceiver.class);

        pendingIntent = PendingIntent.getBroadcast(
                getBaseContext(), REQ_CODE, intent, 0);

        alarmManager = (AlarmManager) getSystemService(Context.ALARM_SERVICE);
        alarmManager.set(AlarmManager.RTC_WAKEUP, System.currentTimeMillis()
                + (60 * 1000), pendingIntent);

デバイスのスリープモードが機能していない場合、BroadCastReceiverCalssはMainActivityクラスを開くことができません。

私はメニフェストで許可を与えました

<uses-permission android:name="android.permission.WAKE_LOCK"/>

助けてください。

4

1 に答える 1

1

ブロードキャスト レシーバーのウェイク ロックは、onReceive メソッドの実行中のみ電話を起動状態に保つことが保証されます。その方法を超えた作業を行う必要がある場合は、別のウェイクロックを取得/管理する必要があります。

この目的のために Commonsware ライブラリが存在します。見てください: https://github.com/commonsguy/cwac-wakeful/blob/master/README.markdown

于 2013-01-15T06:39:46.623 に答える