-1

電話がロックされていてもメッセージを受信するとアラームを鳴らすプログラムを作成しました。電話が鳴ると、アラームを停止するための却下ボタンが表示されますが、私のコードは却下ボタンを表示するだけですぐに消え、アラームを停止する方法のオプションがありません。このコードを手伝ってください。事前に助けてくれてありがとう

public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.receiverinterface);
    unlockScreen();
    alertDialogBuilder = new AlertDialog.Builder(
            context);
    alertDialogBuilder.setTitle("Alarm");
            alertDialogBuilder
            .setMessage("Stop Alarm")
            .setCancelable(false)
            .setPositiveButton("Dismiss", new DialogInterface.OnClickListener() {
                public void onClick(DialogInterface dialog,int id) {
                    Ringtone r = EAlarmReceiver.r;
                    r.stop();
                    Toast.makeText(context.getApplicationContext(), "Alarm Stopped", Toast.LENGTH_LONG).show();
                    if(EAlarmReceiver.sms.length() > 10)
                    {
                        Intent openInterface = new Intent("proj.receiver.VIEWMESSAGE");
                        openInterface.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
                        context.startActivity(openInterface);
                    }
                    else
                    {
                        Intent openInterface = new Intent("proj.receiver.RECEIVERINTERFACE");
                        openInterface.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
                        context.startActivity(openInterface);
                    }
                }
            });
            // create alert dialog
            AlertDialog alertDialog = alertDialogBuilder.create();
            // show it
            alertDialog.show();
}// end oncreate()

@Override
protected void onPause() {
    // TODO Auto-generated method stub
    super.onPause();
    finish();
}

//unlock screen
public void unlockScreen() {
    //make the activity show even the screen is locked.
    Window window = getWindow();
    window.addFlags(WindowManager.LayoutParams.FLAG_TURN_SCREEN_ON
            + WindowManager.LayoutParams.FLAG_SHOW_WHEN_LOCKED
            + WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON
            + WindowManager.LayoutParams.FLAG_DISMISS_KEYGUARD);
}
4

1 に答える 1

1

finish()onPause()から削除した後、このコードを試してください。完全なコードも投稿してください。

編集:-あなたが仕上げを取り除くことはあなたのために働いたとあなたが言ったように、ここにあなたの2番目の質問の解決策があります。

1)複雑で一時的な解決策:-ブール変数を追加してみてください。AlertDialogで実行されたアクションでtrueに設定する必要があり、onResumeでtrueの場合は、アクティビティを終了します。OnResumeは、uがurアクティビティに戻るたびに呼び出します。

2)しかし、もし私があなたの場所にいたら、私は以下のアプローチに従ったでしょう。

アラートダイアログのようなレイアウトを作成します。マニフェストのアクティビティ宣言でアクティビティテーマをダイアログとして設定すると、アクティビティがダイアログとして開きます。したがって、アクションを処理するためにAlertDialogを作成する必要はなく、却下などのボタンを追加できます。

于 2013-01-27T19:46:22.083 に答える