我按照this example設置鬧鐘。設置Android鬧鐘 - 提醒應用程序
這是MainActivity類Droidgap
@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");
}
這是logcat的,
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)
我在幾個不同的方法,但同樣的結果。試過這個(我沒有在這裏添加設置()的代碼,你可以從上面的鏈接中找到它。 )請幫助**
*這裏是link to project files * **
'新MainActivity()'是錯誤不能實例活動類 – Raghunandan
@Raghunandan - 當然可以,但我想這使用「新的測試(本)」類,但同樣的結果。在測試類中我有showToast()方法。測試類擴展MainActivity – shalin
什麼是測試類? – Raghunandan