Получение java.lang.NoSuchMethodError: android.os.FileUtils.getFatVolumeId в ОС 4.2.2 и более поздних версиях

Я столкнулся с проблемой в службе onCreate() при попытке получить идентификатор SD-карты. Использование класса FileUtils пакета android.os из src-external/android-core.

mCardId =
  FileUtils.getFatVolumeId(Environment.getExternalStorageDirectory().getPath());

Журнал сбоев:

12-31 19:55:25.804: E/AndroidRuntime(1235):
java.lang.NoSuchMethodError: android.os.FileUtils.getFatVolumeId 12-31
19:55:25.804: E/AndroidRuntime(1235):   at
cloudtv.android.cs.service.MediaPlaybackService.onCreate(MediaPlaybackService.java:198)
12-31 19:55:25.804: E/AndroidRuntime(1235):     at
android.app.ActivityThread.handleCreateService(ActivityThread.java:2572)
12-31 19:55:25.804: E/AndroidRuntime(1235):     at
android.app.ActivityThread.access$1800(ActivityThread.java:135) 12-31
19:55:25.804: E/AndroidRuntime(1235):   at
android.app.ActivityThread$H.handleMessage(ActivityThread.java:1278)
12-31 19:55:25.804: E/AndroidRuntime(1235):     at
android.os.Handler.dispatchMessage(Handler.java:102) 12-31
19:55:25.804: E/AndroidRuntime(1235):   at
android.os.Looper.loop(Looper.java:136) 12-31 19:55:25.804:
E/AndroidRuntime(1235):     at
android.app.ActivityThread.main(ActivityThread.java:5017) 12-31
19:55:25.804: E/AndroidRuntime(1235):   at
java.lang.reflect.Method.invokeNative(Native Method) 12-31
19:55:25.804: E/AndroidRuntime(1235):   at
java.lang.reflect.Method.invoke(Method.java:515) 12-31 19:55:25.804:
E/AndroidRuntime(1235):     at
com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:779)
12-31 19:55:25.804: E/AndroidRuntime(1235):     at
com.android.internal.os.ZygoteInit.main(ZygoteInit.java:595) 12-31
19:55:25.804: E/AndroidRuntime(1235):   at
dalvik.system.NativeStart.main(Native Method)

Заранее спасибо!


person Bipin Vayalu    schedule 31.12.2013    source источник


Ответы (1)


FileUtils – это внутренний класс платформы, аннотированный @hide. Вы не должны использовать его.

person laalto    schedule 31.12.2013
comment
Спасибо за быстрый ответ, я использую его и работает нормально, но проблема только с 4.2.2 и более поздними устройствами. - person Bipin Vayalu; 31.12.2013
comment
@BipinVayalu: В большинстве случаев он отлично работает на устройствах, которые вы пробовали. Не требуется, чтобы какое-либо устройство имело FileUtils, не говоря уже о каком-либо конкретном методе. И, как вы понимаете, Google не обязан продолжать его предлагать. - person CommonsWare; 31.12.2013