2012-04-22 3 views
0

AlarmManagerを使用してアラームをスケジュールし、Br​​oadcastReceiverを起動しました。放送受信機の中で私はアクティビティを呼び出し、ポップアップダイアログを作成したいと思う。AlarmManagerからダイアログを作成しますか?

ここで重要なのは、ユーザーがどこにいるのかの背景を見て、最初に自分のアプリケーションを前面に持ってきていないことです。次のコードを見てみましょう:

Intent intent = new Intent(context, AlarmActivity.class); 
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); 
context.startActivity(intent); 

を今ここに私はしたくないこれは、何が起こるかです: 1.ユーザが 2.ユーザープレスホーム自分のアプリケーションを見ていると、他のアプリケーション になりました3.私のアプリケーションは、まだバックグラウンドで実行されている 4.アラームtriggers-> BroadcastReceiver->上記の目的は ユーザーが現在MYアプリケーションの最後のページを見ている5を起動すると、私のポップアップダイアログ

何I代わりに次のようにしてください: 5.ユーザーは、依然としてアプリケーションが何であっても見ていますが、彼らは今私のポップアップダイアログを持っています。

私のアプリケーションをフロントに持ち込まずにアクティビティを呼び出すにはどうすればよいですか?

+0

どこからともなく現れたポップアップがユーザーエクスペリエンスに悪いです: あなたは、アラーム(s)は起動時にそれが何をするかし、あなたの他のコードにこのコードを置くことができます。代わりに通知を使用する必要があります。 – Luksprog

+0

これは私のアプリでは全く異なるシナリオです。ユーザーがアラームを拾うように選択した場合、アラームアプリケーションに組み込まれているように、サウンド/バイブレーションとともにポップアップ通知が適切になると思います。たぶん私はソースを見て、アラームアプリケーションがそれをどのように処理するか見ることができますか? – pcm2a

+0

「BroadcastReceiver」からダイアログを開始することはできません。代わりに( 'BroadcastReceiver'の中で)開始するダイアログテーマを持つアクティビティを持つことができるので、ダイアログの外観があります。 – Luksprog

答えて

0

Luksprogが言っていることは本当ですが、デフォルトのアラームでさえも、アラーム設定に対応する時刻にAlertDialogが表示されます。

public void alertBtn1 (View v){ 
     new AlertDialog.Builder(this) 
      .setTitle("AlertDialog") 
      .setMessage(R.string.text OR "YOURTEXTHERE") 
    // If you want to the user to have multiple options, you can replace this 
      .setNeutralButton("YOURTEXTHERE", null) 
    // with this:    
      .setNeutralButton("YOURTEXTHERE", null) 
      .setPositiveButton("YOURTEXTHERE", new DialogInterface.OnClickListener() { 
       public void onClick(DialogInterface dialog, int which) { 
    // finish(); or whatever you like to happen when the user clicks the button. 
        finish(); 
        } 
       }) 
      .show(); 

    } 
+0

これを行うにはアクティビティを開始する必要はありませんか?上のステップで、AlertDialogを表示することができるアクティビティショーを立ち上げることができます。問題は、アプリケーションの最後のページが何であってもそれを表示することです。アプリケーションを前面に来らないようにするにはどうすればよいですか? – pcm2a

+0

ええと...私は正直に知らないので、どのように私はあなたを助けることができるか分からない。コードを試してみてください。 AlertDialogをポップアップし、元のクラス/アクティビティをアクティブにするコードを持つ別のクラスを参照できます。このようにして、申請書に書いた最後のページは持ち越されません。また、finish()を使用することもできます。ページを終了し、最後に行ったページに戻ります。 – Kurty

関連する問題