2013-12-24 2 views
1

Я использую широковещательный приемник для диспетчера аварийных сигналов для отправки сообщения на устройство. Для этого я написал класс Broad Cast Receiver. И также я хочу отобразить диалог оповещений в методе получения. Для этого широковещательный приемник выглядит следующим образом. И я включаю диалог оповещений в Broad Cast Receiver.Alert Dialog не работает в широковещательном ресивере

public class AlarmReciever extends BroadcastReceiver 
{ 
     @Override 
      public void onReceive(Context context, Intent intent) 
      { 


        String phoneNumberReciver="5556"; 
        String message="Happy Birthday My dear Friend"; 
        SmsManager sms = SmsManager.getDefault(); 
        sms.sendTextMessage(phoneNumberReciver, null, message, null, null); 
        Toast.makeText(context, "Alarm fired and SMS Sent", Toast.LENGTH_LONG).show(); 


        AlertDialog.Builder builder1 = new AlertDialog.Builder(context); 
        builder1.setMessage("message delivered"); 
        builder1.setCancelable(true); 
        builder1.setPositiveButton("Yes", 
          new DialogInterface.OnClickListener() { 
         public void onClick(DialogInterface dialog, int id) { 
          dialog.cancel(); 
         } 
        }); 
        builder1.setNegativeButton("No", 
          new DialogInterface.OnClickListener() { 
         public void onClick(DialogInterface dialog, int id) { 
          dialog.cancel(); 
         } 
        }); 

        AlertDialog alert11 = builder1.create(); 
        alert11.show(); 


      } 

} 

И я звоню вещательный приемник от деятельности

Long time = new GregorianCalendar().getTimeInMillis()+00*00*03*1000; 
Intent intentAlarm = new Intent(this, AlarmReciever.class); 
AlarmManager alarmManager = (AlarmManager) getSystemService(Context.ALARM_SERVICE); alarmManager.set(AlarmManager.RTC_WAKEUP,time, PendingIntent.getBroadcast(this,1, intentAlarm, PendingIntent.FLAG_UPDATE_CURRENT)); 

И я получаю ошибку в классе литой приемники Broad в линии

alert1.show()
+2

http://stackoverflow.com/a/3835524/1937802 поиск –

+0

Вы можете попробовать использовать обработчик в onRecieve и создать диалог в обработчик –

ответ

0

enter image description here

Создать активность как таким образом:

public class MainActivity extends Activity { 

@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 

    AlertDialog.Builder builder = new AlertDialog.Builder(this); 
    builder.setMessage("Message") 
      .setTitle("Title") 
      .setCancelable(false) 
      .setPositiveButton("OK", new DialogInterface.OnClickListener() 
      { 
       public void onClick(DialogInterface dialog, int id) 
       { 
        MainActivity.this.finish(); 
       } 
      }); 


    AlertDialog alert = builder.create(); 
    alert.show(); 
} 

@Override 
public boolean onCreateOptionsMenu(Menu menu) { 
    getMenuInflater().inflate(R.menu.activity_main, menu); 
    return true; 
}} 

Создать тему:

<resources> 
     <style name="Theme.Transparent" parent="android:Theme"> 
      <item name="android:windowIsTranslucent">true</item> 
      <item name="android:windowBackground">@android:color/transparent</item> 
      <item name="android:windowContentOverlay">@null</item> 
      <item name="android:windowNoTitle">true</item> 
      <item name="android:windowIsFloating">true</item> 
      <item name="android:backgroundDimEnabled">false</item> 
      </style> 
</resources> 

Установите эту тему в вашем файле манифеста:

<activity 
     android:name=".MainActivity" 
     android:theme="@style/Theme.Transparent" 
     android:label="@string/app_name" > 
     <intent-filter> 
      <action android:name="android.intent.action.MAIN" /> 

      <category android:name="android.intent.category.LAUNCHER" /> 
     </intent-filter> 
    </activity> 

Вызывайте эту MainActivity класс от вашего BroadcastReceiver класса

0

Для того, чтобы увидеть AlertDialog, необходимо указать Activity, поэтому я не думаю, что это можно показать в BroadcastReceiver.

 Смежные вопросы

  • Нет связанных вопросов^_^