Android App不在设备上工作,而它在模拟器上工作正常

时间:2015-06-21 16:51:11

标签: android android-studio

我有一个在Emulator上运行良好的android应用程序。但是当我在设备上尝试它时,它显示出一些问题,比如“无法执行活动的方法”。以下是logcat报告。

FATAL EXCEPTION: main
java.lang.IllegalStateException: Could not execute method of the activity
        at android.view.View$1.onClick(View.java:3640)
        at android.view.View.performClick(View.java:4249)
        at android.view.View$PerformClick.run(View.java:17764)
        at android.os.Handler.handleCallback(Handler.java:730)
        at android.os.Handler.dispatchMessage(Handler.java:92)
        at android.os.Looper.loop(Looper.java:137)
Caused by: java.lang.NoSuchMethodError: android.app.AlarmManager.setExact
        at com.example.manju.remainder.service.task.AlarmTask.run(AlarmTask.java:49)
        at com.example.manju.remainder.service.ScheduleService.setAlarm(ScheduleService.java:50)
        at com.example.manju.remainder.service.ScheduleClient.setAlarmForNotification(ScheduleClient.java:55)
        at com.example.manju.remainder.MainActivity.callAlarm(MainActivity.java:507)
        at com.example.manju.remainder.MainActivity.checkDates(MainActivity.java:474)
        at com.example.manju.remainder.MainActivity.submitButtonClicked(MainActivity.java:160)

任何人都可以帮我解决这个问题。

2 个答案:

答案 0 :(得分:7)

试试这个:

if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.KITKAT) {
   // only for kitkat and newer versions
   android.app.AlarmManager.setExact(int type, long triggerAtMillis, PendingIntent operation);
} else {
   android.app.AlarmManager.set(int type, long triggerAtMillis, PendingIntent operation);
}

基本上,.setExact(...);方法需要API 19&上面(它只是一种绕过android提供的优化的方法,以最大化电池寿命)。

答案 1 :(得分:0)

另一个解决方案是,将build.gradle中的minSdkVersion设置为手机中的minSdkVersion。

假设您的手机版本是Android 5.0,那么API级别是21.您可以设置minSdkVersion 21。

defaultConfig {
    minSdkVersion 21
    targetSdkVersion 21
    versionCode 1
    versionName "1.0"
}

这绝对有效。