2013-08-24 2 views
1

Иногда я получаю Exception.java.io.FileNotFoundException, сбой открытия файла: EROFS (файловая система только для чтения). У меня есть разрешение WRITE_EXTERNAL_STORAGE в моем манифесте, время от времени, когда у меня запущены мои службы, я получаю эти исключения, и несколько операций не будут выполнены, но если я перезагружу свое устройство, тогда он отлично работает. Я хочу поймать исключение Exception.java.io.FileNotFoundException и перезагрузить мое устройство программно. Мое устройство корневое, поэтому я программно выполняю команду «su -c reboot».Не удалось открыть файл Android: EROFS

Мне нужно знать, как поймать исключение «Ошибка открытия файла: EROFS» и вызвать перезагрузку ??

+0

это исключение не означает, что нет файла для открытия?), в любом случае, что касается включения части кода, которая будет генерировать исключение? попробуйте {ваш код} catch (FileNotFoundException e) {reboot here?} должен выполнить эту работу. – JosephChilberry

ответ

0

решить проблему следующим образом:

try{ 
     do whatever 
    }catch(FileNotFoundException ex){ 
     if("EROFS (Read- only file System)".equals(ex.getMessage())){ 
      call code for reboot 
     } 
    } 

Вы можете заменить сообщение об ошибке или даже пропустить его

Edit: - на основе комментариев

try{ 
     do whatever 
    }catch(IOException ex){ 
     if((ex instanceof FileNotFoundException) && "EROFS (Read- only file System)".equals(ex.getMessage())){ 
      call code for reboot 
     } 
    } 
+0

Вышеприведенный код работает для меня, но мне нужно поймать это исключение во многих местах моего кода. Если я хочу использовать «extends FileNotFoundException class», тогда как я могу поймать это исключение – user1810931

+1

, чем поймать его родительское исключение IOException http: // docs .oracle.com/javase/7/docs/api/java/io/FileNotFoundException.html и нажмите upvote, если мне помогли, спасибо –

+0

Это так?

 import java.io.IOException; public class FileNotFoundException extends IOException { \t public FileNotFoundException() { \t \t super(); \t \t If ("EROFS (Read- only file System)".equalsIgnoreCase(getMessage())) { \t \t \t // reboot \t \t } \t } \t Override \t public String getMessage() { \t \t return super.getMessage(); \t } \t }
user1810931

Смежные вопросы