2012-01-13 2 views
0

私のアプリケーションのバックグラウンドでサービスを利用したいと思います。サービス内で特別な場所に到着したら、それをやめて「OK」(何らかのアラートウィンドウ)をクリックするまで消えることはないユーザー通知に表示したいと思う。彼または彼女が「OK」をクリックすると、私は、活動中のデータが私の活動に渡されることを望みます。アンドロイドサービスと「アラートウィンドウ」

私は助けてもらえますか?私のサービスはすでにうまく走っていますが、私はAlert Dialogを使いたいですが、サービスから呼び出す方法はわかりません。

+0

情報を表示するために[AlertDialog](http://developer.android.com/reference/android/app/AlertDialog.html)にロックをかけてください。サービスから情報を送信するための 'Activity.sendBroadcast()'と、アクティビティでそれを受け取るための[BroadcastReceiver](http://developer.android.com/reference/android/content/BroadcastReceiver.html)があります。 – tidbeck

答えて

1

バックグラウンドサービスは、ユーザーとの対話を受けるために、独自に活動を開始してはいけません。 通知バーに通知する必要があります。この通知は、ユーザが行動を起こすまで強く旗を立てることができ、ユーザがボタンをクリックするまでポップアップを解除しないように強い。通知に関する良い(そして公式な)チュートリアルのために上記のリンクをたどる

実際にアクティビティを起動して(そしてダイアログをポップアップする)には、まず次のフラグをインテントに設定しなければなりません。

intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 
startActivity(intent); 
0

サービスの特定のポイントに達すると、アクティビティが開始され、setContentビューは使用されませんが、onCreate()でこれを使用して警告ダイアログを表示します。

AlertDialog.Builder builder = new AlertDialog.Builder(this); 
builder.setMessage("ALERT") 
    .setCancelable(false) 
    .setPositiveButton("Ok", new DialogInterface.OnClickListener() { 
     public void onClick(DialogInterface dialog, int id) { 
      MyActivity.this.finish(); 
     } 
    }) 
    .setNegativeButton("No", new DialogInterface.OnClickListener() { 
     public void onClick(DialogInterface dialog, int id) { 
      dialog.cancel(); 
     } 
    }); 
AlertDialog alert = builder.create(); 

ユーザーが[OK]を押すと、ダイアログがアクティビティで終了します。

EDIT:あなただけの活動開始バンドルにそれを置く活動に送信するデータの

official documentation statesとして
Intent intent = new Intent(this, SecondActivity.class); 
Bundle b = new Bundle(); 

// see Bundle.putInt, etc. 
// Bundle.putSerializable for full Objects (careful there) 

b.putXXXXX("key", ITEM); 
intent.putExtras(b); 
startActivity(intent); 

// -- later, in Activity 
Bundle b = this.getIntent().getExtras(); 
int i = b.getInt("key"); 
+0

また、okボタンでdialog.cancle()を呼び出すこともできますが、アクティビティ全体を閉じることをお勧めします。 –

+0

アクティビティが実行中で、サービスはバックグラウンドで実行されていますが、何らかの形でアクティビティを更新したい場合 - >ステータスのラジオボタンをサービス結果に応じて「チェック」に変更したい – santBart

関連する問題