2015-11-28 2 views
0

Это мой первый проект в java. Я хочу добавить функцию резервного копирования и восстановления обоев для своего приложения.Android Studio - если файл существует в системной папке, то

Код для резервного копирования:

public void btnBackupWallpaper(View view) { 
    File wallpaper = new File("/data/system/users/0/wallpaper"); 
    if(wallpaper.exists()){ 
     RootCmd.RunRootCmd("cp -f /data/system/users/0/wallpaper /data/local/tmp/wallpaper"); 
     Toast.makeText(getApplicationContext(), "Wallpaper backup completed.", 
       Toast.LENGTH_LONG).show(); 
    }else{ 
     Toast.makeText(getApplicationContext(), "Wallpaper not found.", 
       Toast.LENGTH_LONG).show(); 
    } 
} 

код для восстановления

public void btnRestoreWallpaper(View view) { 
    File wallpaper = new File("/data/local/tmp/wallpaper"); 
    if(wallpaper.exists()){ 
     RootCmd.RunRootCmd("cp /data/local/tmp/wallpaper /data/system/users/0/wallpaper"); 
     RootCmd.RunRootCmd("chmod 0700 /data/system/users/0/wallpaper"); 
     RootCmd.RunRootCmd("chown system.system /data/system/users/0/wallpaper"); 
     RootCmd.RunRootCmd("rm /data/local/tmp/wallpaper"); 
     Toast.makeText(getApplicationContext(), "Wallpaper restore completed.", 
       Toast.LENGTH_LONG).show(); 
    }else{ 
     Toast.makeText(getApplicationContext(), "Wallpaper backup not found.", 
       Toast.LENGTH_LONG).show(); 
    } 
} 

восстановление работает нормально, но резервная копия всегда говорит "Обои не найдены".

File wallpaper = new File("/data/system/users/0/wallpaper"); 
    if(wallpaper.exists()){} 

Почему эта часть кода не работает?

Спасибо.

+0

Я сомневаюсь, что '/ данные/система/users' доступна на' ~ '. Вы должны запустить проверку с помощью root – Blackbelt

+0

Спасибо за повтор. Я запускаю приложение с помощью root. Если вы имеете в виду «~/data/system/users/0/wallpaper», это не работает. –

ответ

0

Мое решение заключается в использовании RootTools:

public void btnBackupWallpaper(View view) { 
    if(RootTools.exists("/data/system/users/0/wallpaper")) { 
     RootCmd.RunRootCmd("cp -f /data/system/users/0/wallpaper /data/local/tmp/wallpaper"); 
     Context context = getApplicationContext(); 
     Toast.makeText(context, context.getString(R.string.wallpaper_backup_completed), Toast.LENGTH_LONG).show(); 
    } else { 
     Context context = getApplicationContext(); 
     Toast.makeText(context, context.getString(R.string.wallpaper_not_found), Toast.LENGTH_LONG).show(); 
    } 
} 
Смежные вопросы