2011-02-26 6 views
1

私は、BroadcastReceiverを使用して所定の時間に通知を受け取ります。今、私はEditTextからそのステータスバー通知にInputを取得しようとしています。私は今、LayoutInflaterでそれを試しましたが、動作させることができません。BroadcastReceiverのEditText

public class AlarmBroadcastReceiver extends BroadcastReceiver { 

public void onReceive(Context context, Intent intent) { 
    notificationStatus(context); 
} 

private void notificationStatus(Context context) { 
    final NotificationManager mNotificationManager = (NotificationManager) context 
      .getSystemService(Context.NOTIFICATION_SERVICE); 

    LayoutInflater mInflater = LayoutInflater.from(context); 
    View myView = mInflater.inflate(R.layout.main, null); 

    EditText etxt_title = (EditText) myView.findViewById(R.id.etxt_title); 
    String n_title = etxt_title.getText().toString(); 

    EditText etxt_message = (EditText) myView.findViewById(R.id.etxt_message); 
    String n_message = etxt_message.getText().toString(); 

    final long when = System.currentTimeMillis(); 
    final int icon = R.drawable.notification_icon; 
    final Notification notification = new Notification(icon, n_title + " - " + n_message, when); 
    final Intent notificationIntent = new Intent(context 
      .getApplicationContext(), Main.class); 
    final PendingIntent contentIntent = PendingIntent.getActivity(context 
      .getApplicationContext(), 0, notificationIntent, 0); 

    notification.defaults |= Notification.DEFAULT_SOUND; 
    notification.defaults |= Notification.DEFAULT_LIGHTS; 
    notification.setLatestEventInfo(context, n_title, n_message, 
      contentIntent); 
    mNotificationManager.notify(1, notification); 
}} 

なぜこのように動作しないのですか?私が得ている出力は空で、エラーはありません。

+0

'n_message'と' n_title'をログに出力して、あなたが必要とする情報が含まれているかどうか確認しましたか?一見すると、 'notification.setLatestEventInfo()'で正しく設定されているようです。 –

+0

はい、私はすでに試しましたが、出力は空です!通知では、n_titleとn_messageの間に設定した " - "しか見ることができません。 – CTrox

答えて

1

私は、BroadcastReceiverを使用して所定の時間に通知を受け取ります。

その文は意味をなさない。 BroadcastReceivers「通知を受け取る」ことはまったくありません。

ここで、入力をEditTextからそのステータスバー通知に取得しようとしています。

EditTextはアクティビティに参加する必要があります。あなたには活動がありません。

私は今LayoutInflaterで試しましたが、うまく動作しません。

まず、BroadcastReceiverにはユーザーインターフェイスがありません。

第2に、LayoutInflaterのレイアウトを膨らませただけであっても、レイアウトが実際に画面に表示されるわけではありません。そのためには、活動が必要です。

+0

1.ええ、私は少し間違って書いた。私はAlarmManagerを使用して、指定された時刻に通知を表示しています。 2. My EditTextはアクティビティ内にあります。しかし私は、そのアクティビティからの入力を、ブロードキャスト受信者 によってトリガーされる通知に入れたいと思っています。3.私はブロードキャストレシーバーを使って通知をトリガーするだけです。 – CTrox

+0

@cTrox:アクティビティに 'Notification'を表示させます。あるいは、アクティビティでテキストをデータベースやファイルに保存させ、 'BroadcastReceiver'がデータベースやファイルを読み込み、' Notification'を表示する 'IntentService'を開始させるようにしてください。 – CommonsWare

+0

よろしくお願いいたします。私は後でそれを試みます。 – CTrox