2015-08-26 29 views
1

我想使alertdialog buddler可以消失,並在用戶5分鐘後沒有點擊任何按鈕時自動發送短信。 我可以顯示alterdialog buddler,但我不知道如何發送短信。android如何在5分鐘後刪除alertdialog?

這是我的代碼。 請幫我改正它。

AlarmService_Servierce.java

public class AlarmService_Servierce extends BroadcastReceiver { 

    @Override 
    public void onReceive(Context context, Intent intent) { 
     // TODO Auto-generated method stub 
     final Calendar c = Calendar.getInstance(); 
     int mHour = c.get(Calendar.HOUR_OF_DAY); 
     int mMinute = c.get(Calendar.MINUTE); 
     int mSecond =c.get(Calendar.SECOND);   


     AlertDialog.Builder builder = new AlertDialog.Builder(context); 


     builder.setTitle("NOTICE"); 
     builder.setIcon(R.drawable.notification_icon); 
     builder.setMessage("notice message"); 
     builder.setPositiveButton("OK", new DialogInterface.OnClickListener() { 
     public void onClick(DialogInterface dialog, int whichButton) { 
       //Do something 
       dialog.dismiss(); 
      } 
     }); 
     builder.setNegativeButton("Close", new DialogInterface.OnClickListener() { 
      public void onClick(DialogInterface dialog, int whichButton) { 
       dialog.dismiss(); 
      } 
    }); 
     AlertDialog alert = builder.create(); 
     alert.getWindow().setType(WindowManager.LayoutParams.TYPE_SYSTEM_ALERT); 
     alert.show(); 

    } 

} 

MainActivity.java

Intent intent = new Intent(MainActivity.this, AlarmService_Service.class); 
    PendingIntent sender = PendingIntent.getBroadcast(MainActivity.this, 
      0, intent, 0); 


    long firstTime = SystemClock.elapsedRealtime(); 
    firstTime += 300*1000;  
    AlarmManager am = (AlarmManager)getSystemService(ALARM_SERVICE); 
     am.setRepeating(AlarmManager.ELAPSED_REALTIME_WAKEUP, 
        firstTime, 10*1000, sender); 
     final Calendar c = Calendar.getInstance(); 
     int mHour = c.get(Calendar.HOUR_OF_DAY); 
     int mMinute = c.get(Calendar.MINUTE); 
     int mSecond =c.get(Calendar.SECOND); 
    } 
private void SendSMS(String phonenumber, String message) { 
     SmsManager smsManager = SmsManager.getDefault(); 
     String sendTo = phonenumber; 
     String myMessage = message; 
     smsManager.sendTextMessage(sendTo, null, myMessage, null, null); 

     finish(); 
    } 

回答

2
final AlertDialog.Builder dialog = new AlertDialog.Builder(this).setTitle("Leaving launcher").setMessage("Are you sure you want to leave the launcher?"); 
dialog.setPositiveButton("Confirm", new DialogInterface.OnClickListener() { 
    @Override 
public void onClick(DialogInterface dialog, int whichButton) { 
    exitLauncher(); 
} 
});  
final AlertDialog alert = dialog.create(); 
alert.show(); 

// Hide after some seconds 
final Handler handler = new Handler(); 
final Runnable runnable = new Runnable() { 
@Override 
public void run() { 
    if (alert.isShowing()) { 
     alert.dismiss(); 
    } 
} 
}; 

alert.setOnDismissListener(new DialogInterface.OnDismissListener() { 
@Override 
public void onDismiss(DialogInterface dialog) { 
    handler.removeCallbacks(runnable); 
} 
    }); 

handler.postDelayed(runnable, 10000);//replace your time 
+0

它適用於我。感謝很多:) – stack

0

使用,無論你想關閉該對話框,或當計時器結束瞭解僱功能。

alert.dismiss();

0

當你顯示了當時間段完整的呼叫dialog.dismiss)對話框。而(設置定時器;並確保你必須在UI線程上調用它。你可以使用runOnUiThread()方法來做到這一點。