Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/clojure/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 设置Android警报-提醒应用程序_Javascript_Android_Cordova_Alarmmanager - Fatal编程技术网

Javascript 设置Android警报-提醒应用程序

Javascript 设置Android警报-提醒应用程序,javascript,android,cordova,alarmmanager,Javascript,Android,Cordova,Alarmmanager,我跟着设置闹钟 这是用Droidgap扩展的MainActivity类 @SuppressLint({ "JavascriptInterface", "SetJavaScriptEnabled" }) public class MainActivity extends DroidGap { //CordovaWebView cwv; final static public long ONE_SECOND = 1000; final static public long TWENTY_SECOND

我跟着设置闹钟

这是用Droidgap扩展的MainActivity

@SuppressLint({ "JavascriptInterface", "SetJavaScriptEnabled" }) public class MainActivity extends DroidGap {
//CordovaWebView cwv;
final static public long ONE_SECOND = 1000;
final static public long TWENTY_SECONDS = ONE_SECOND * 20;
public PendingIntent pi;
public BroadcastReceiver br;
public AlarmManager am;
@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);      

    WebView webView =new WebView(this);
    //enabling javascript call to native code
    webView.getSettings().setJavaScriptEnabled(true);

    webView.setClickable(true);
    //Give name to interface class, "Reminder" will call through javascript
    webView.addJavascriptInterface(new MainActivity(), "Reminder");

    webView.loadUrl("file:///android_asset/www/index.html");
     setContentView(webView);        

}
这项工作很好,警报和火灾设置正确

 @Override
public void onStart(){
    super.onStart();
    setup();
am.set( AlarmManager.ELAPSED_REALTIME_WAKEUP, SystemClock.elapsedRealtime() + 
            TWENTY_SECONDS, pi ); //This code works
}   
当我试图通过javascript调用另一个具有相同代码的方法时,它给出了NullPointerException,这是我的JavascriptInterface

 @JavascriptInterface
public void showToast(String mssg) {

     Log.v("AlrmMNG", am.toString());//Even this log is not working
        am.set( AlarmManager.ELAPSED_REALTIME_WAKEUP, SystemClock.elapsedRealtime() + 
                TWENTY_SECONDS, pi );

Log.v("Alarm end", "Alarm set");
}
这是日志猫

03-05 12:25:58.330: E/AndroidRuntime(3444):     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2159)
03-05 12:55:59.710: W/System.err(3640): java.lang.NullPointerException
03-05 12:55:59.710: W/System.err(3640):     at com.agrando.reminder_level1.MainActivity.showToast(MainActivity.java:67)
03-05 12:55:59.710: W/System.err(3640):     at com.android.org.chromium.base.SystemMessageHandler.nativeDoRunLoopOnce(Native Method)
03-05 12:55:59.720: W/System.err(3640):     at com.android.org.chromium.base.SystemMessageHandler.handleMessage(SystemMessageHandler.java:27)
03-05 12:55:59.730: W/System.err(3640):     at android.os.Handler.dispatchMessage(Handler.java:102)
03-05 12:55:59.730: W/System.err(3640):     at android.os.Looper.loop(Looper.java:136)
03-05 12:55:59.730: W/System.err(3640):     at android.os.HandlerThread.run(HandlerThread.java:61)
03-05 12:55:59.830: I/chromium(3640): [INFO:CONSOLE(25)] "Uncaught Error: Error calling method on NPObject.", source: file:///android_asset/www/index.html (25)
我尝试了几种不同的方法,但结果相同。(我没有在这里添加setup()代码,您可以从上面给出的链接中找到。)请帮助**

*
这是***

am
AlarmManager
实例是
null
,在您忘记在使用前初始化它之前,请按如下方式操作:

am=(AlarmManager)MainActivity.this.getSystemService(Context.ALARM_SERVICE);

new MainActivity()
错误,无法实例化活动class@Raghunandan-当然可以,但我使用“new test(this)”类进行了尝试,但结果相同。在测试类中,我有showtoos()方法。测试类扩展MainActivity@Raghunandan-test类只是一个扩展了MainActivity的类,它有showtoos()方法,这种方法中的普通代码运行良好,除了这个。我可以调用其他类方法并从中检索值,但是像alarm manager那样访问系统资源并不允许我在设置alarm?之前需要一次又一次地初始化它,我是在onStart()中初始化的。@saw:你的意思是你在
设置中初始化了它?然后确定,无需再次初始化。@saw:但am或pi都为null,并且创建一个单独的或内部的类来传递给addJavascriptInterface方法,而不是创建MainActivity ObjectI add setup();转换为showtoos(字符串mssg)方法。但是这个Log.v(“AlrmMNG”,am.toString())不起作用;也不记录任何…使用单独的类也会给出相同的结果!!!,我的api级别是19,有什么问题吗?