0

BroadcastReceiver に AlertDialog を実行させようとしていますが、Dialog メソッドへの呼び出しをスキップしているだけです (キャッチ例外にスローしています): My 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[] details) {

        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();
    }

ありがとう!編集:アプリを開いたくないので、アクティビティに入れてアクティビティを実行するように言わないでください。開いているアプリの上に置きたいです。

4

2 に答える 2

0

カレンダーの長い期間フィールド (年など) を設定しないと、現在時刻より前にアラームを設定しているように見えます。次のようなことを試してください:

Calendar calendar = Calendar.getInstance();
calendar.setTimeInMillis(System.currentTimeMillis());
calendar.add(Calendar.MINUTES, 23*60 + 58);
于 2013-04-24T05:57:24.237 に答える
0

(編集前)1.i クラスDialogを呼び出したので、Intent がそれを呼び出そうとするとDialog.class、System クラスで呼び出されますDialog。2.使用しました: Android で透明なアクティビティを作成するにはどうすればよいですか? アクティビティを透明にするためにContentView、すでに開いているアクティビティの上にあるダイアログポップアップのみを使用しました。

于 2013-04-24T12:40:52.170 に答える