Спасибо Тони за публикацию обходного пути. Это работает в большинстве случаев, но не всегда. Мы выпустили наше приложение с этим обходным решением (вместе с проверкой версии); однако это решение не помогло на Samsung Galaxy Note GT-8000 (Android 4.4.2). Устройства 4.4.2 по умолчанию имеют эту ошибку, и решение работает, однако Samsung, похоже, исправила эту проблему в выпуске 4.4.2, поэтому onTimeSet() вызывается только один раз, который мы игнорируем, а второй вызов никогда не выполнялся.
Мы публикуем решение, которое мы применили сегодня. Хотя я не доволен решением, так как это еще один хак/обходной путь, но он может помочь в сценариях, когда проверка версии не помогает, а OEM-производители объединяют выборочные исправления.
Наша предыдущая реализация была
if((android.os.Build.VERSION.SDK_INT >=
Build.VERSION_CODES.ICE_CREAM_SANDWICH) &&
(android.os.Build.VERSION.SDK_INT <
Build.VERSION_CODES.LOLLIPOP)){
if(ccount == 1){
// Do Your Processing
count = 0;
}else{
// Ignore event. Bug in Android API
count++;
}
}else{
// Do Your Processing
}
Наша новая реализация
if((android.os.Build.VERSION.SDK_INT >=
Build.VERSION_CODES.ICE_CREAM_SANDWICH) &&
(android.os.Build.VERSION.SDK_INT <
Build.VERSION_CODES.LOLLIPOP)){
StackTraceElement[] stacktrace = Thread.currentThread().getStackTrace();
StackTraceElement e = stacktrace[4];
String methodName = e.getMethodName();
if(methodName.equals("onClick")){
// Do Your Processing
}else{
// Ignore event. Bug in Android API
}
}else{
// Do Your Processing
}
Надеюсь, это может помочь другим.
person
Gailu
schedule
02.04.2016