Android应用程序不是在设备上工作,而其在模拟器上的工作正常

问题描述:

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

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) 

谁能帮我关于这个..

+0

你确定模拟器和你的测试设备是相同的版本吗? – Lal

+0

ya ofcourse..It正在模拟器上正常运行。 –

+0

对不起,如何检查! –

试试这个:

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提供,以最大限度延长电池寿命)。

+0

谢谢你sazid bi ...现在正在工作..! –

+0

@ManjuJK很高兴它的工作:D,接受它作为正确的答案,以便其他人也可能受益 – Sazid

另一种解决方案是,将您的build.gradle中的minSdkVersion设置为Phone中的minSdkVersion。

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

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

这将definetly工作。