SDK 级别检查的问题
Problems with SDK level checking
我正在 运行 测试 4.4.2 设备,出现奇怪的日志,验证应该可以防止这种情况发生:
Logcat:
I/dalvikvm: Could not find method android.app.AlarmManager.setAndAllowWhileIdle, referenced from method initTimer
I/dalvikvm: Could not find method requestPermissions, referenced from method MyActivity.requestPermissions
方法class:
void requestPermissions() {
List<String> permissionsNeeded = new ArrayList<>();
final List<String> permissionsList = new ArrayList<>();
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
//verify permission
return;
}
//normal flow
}
void initTimerGetRegions(Context context) {
AlarmManager processTimer = Memory.getInstance().getTimer(context);
Intent intentAlarm = new Intent(context, TimerReceiver.class);
PendingIntent pendingIntentAlarm = PendingIntent.getBroadcast(context, 1,
intentAlarm, PendingIntent.FLAG_UPDATE_CURRENT);
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
processTimer.setAndAllowWhileIdle(AlarmManager.RTC_WAKEUP, System.currentTimeMillis() + 1000, pendingIntentAlarm);
} else if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {
processTimer.setExact(AlarmManager.RTC_WAKEUP, System.currentTimeMillis() + 1000, pendingIntentAlarm);
} else {
processTimer.set(AlarmManager.RTC_WAKEUP, System.currentTimeMillis() + 1000, pendingIntentAlarm);
}
}
显然代码适用于较高版本,但较低版本正在抓取这些日志。
strange logs are coming up
它们完全正常。
the verification should prevent this
没有
这些是来自 Dalvik VM 的消息,表明它在您的 class 中加载时难以找到某些方法。那是因为这些方法仅适用于 Android.
的较新版本
不过,关键是日志行的第一个字母:I
。这是一条情报信息。这不是错误。只要您不尝试执行任何这些缺失的方法,一切都很好。
我正在 运行 测试 4.4.2 设备,出现奇怪的日志,验证应该可以防止这种情况发生:
Logcat:
I/dalvikvm: Could not find method android.app.AlarmManager.setAndAllowWhileIdle, referenced from method initTimer
I/dalvikvm: Could not find method requestPermissions, referenced from method MyActivity.requestPermissions
方法class:
void requestPermissions() {
List<String> permissionsNeeded = new ArrayList<>();
final List<String> permissionsList = new ArrayList<>();
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
//verify permission
return;
}
//normal flow
}
void initTimerGetRegions(Context context) {
AlarmManager processTimer = Memory.getInstance().getTimer(context);
Intent intentAlarm = new Intent(context, TimerReceiver.class);
PendingIntent pendingIntentAlarm = PendingIntent.getBroadcast(context, 1,
intentAlarm, PendingIntent.FLAG_UPDATE_CURRENT);
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
processTimer.setAndAllowWhileIdle(AlarmManager.RTC_WAKEUP, System.currentTimeMillis() + 1000, pendingIntentAlarm);
} else if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {
processTimer.setExact(AlarmManager.RTC_WAKEUP, System.currentTimeMillis() + 1000, pendingIntentAlarm);
} else {
processTimer.set(AlarmManager.RTC_WAKEUP, System.currentTimeMillis() + 1000, pendingIntentAlarm);
}
}
显然代码适用于较高版本,但较低版本正在抓取这些日志。
strange logs are coming up
它们完全正常。
the verification should prevent this
没有
这些是来自 Dalvik VM 的消息,表明它在您的 class 中加载时难以找到某些方法。那是因为这些方法仅适用于 Android.
的较新版本不过,关键是日志行的第一个字母:I
。这是一条情报信息。这不是错误。只要您不尝试执行任何这些缺失的方法,一切都很好。