我正在尝试使BroadcastReceiver运行一个AlertDialog,它只是跳过对Dialog方法的调用(并抛出catch异常): 我的BroadcastReceiver:
public void onReceive(Context context, Intent intent) {
this.con = context;
try
{
PowerManager pm = (PowerManager) context.getSystemService(Context.POWER_SERVICE);
PowerManager.WakeLock wl = pm.newWakeLock(PowerManager.PARTIAL_WAKE_LOCK, "YOUR TAG");
//Acquire the lock
wl.acquire();
intent.getExtras();
new StringBuilder();
wl.release();
String[] a ={"a","b"};
create(context, a); //The Dialog Call
setOnetimeTimer(con);
Toast.makeText(context, "Hurray!", Toast.LENGTH_SHORT).show();
}
catch (Exception e)
{
Toast.makeText(context, "Error,broadcastReciver"+e.getMessage(), Toast.LENGTH_LONG).show();
e.printStackTrace();
}
}
这是create()
方法:(创建对话框)
public static void create(Context context,String [] description){
AlertDialog.Builder builder = new AlertDialog.Builder(context);
builder.setCancelable(true);
builder.setTitle("Random String");
builder.setMessage(descriptions[rn.nextInt(2)]);
//builder.setMessage("test");
builder.setInverseBackgroundForced(false);
builder.setPositiveButton("Close",
new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog,
int which) {
dialog.dismiss();
}
});
AlertDialog alert = builder.create();
alert.show();
}
谢谢! 编辑:不要说我把它放在一个活动中并运行活动,因为我不希望它打开我的应用程序,我希望它在打开的应用程序之上。
答案 0 :(得分:0)
如果不设置日历的较长持续时间字段(例如年份),则表示您在当前时间之前设置闹钟。尝试这样的事情:
Calendar calendar = Calendar.getInstance();
calendar.setTimeInMillis(System.currentTimeMillis());
calendar.add(Calendar.MINUTES, 23*60 + 58);
答案 1 :(得分:0)
(编辑前)1.i调用类Dialog
,以便当Intent尝试调用Dialog.class
时,系统类Dialog
中调用它。
我使用过:
How do I create a transparent Activity on Android?
使活动透明,我没有使用ContentView
所以只有对话框弹出已经打开的活动。