Я использую следующий код для добавления полного разрешения для файлов изображений в android. Этот код не работает каждый раз. Представьте, что есть три файла изображения: A.png, B.png и C.png. В некоторых условиях все файлы получат полное разрешение. В некоторых условиях A.png получит, а в некоторых условиях получит или A и B получат полное разрешение. Я не смог найти причину. Помогите найти причину.
String iconFile = themePrefs.getString(info.activityInfo.name, ""); // Icon file = "/data/data/com.android.settings/MyApp/A.png";
System.out.println("FileExecute " + ico.canExecute()); //always false
System.out.println("FileRead " + ico.canRead()); //always false
System.out.println("FileWrite " + ico.canWrite()); //always false
System.out.println("FileExists " + ico.exists()); //always true
System.out.println("FileisFile " + ico.isFile()); //always true
System.out.println("FileisDirectory " + ico.isDirectory());//always false
Drawable d = null;
FileInputStream fis; // in stream
try {
File ico = new File(iconFile); //creating a file with the path (because only this is working with absolute path)
try {
Runtime.getRuntime().exec("chmod 777 " + iconFile);
} catch (IOException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
System.out.println("FileExecute " + ico.canExecute()); // Sometimes getting true, Sometimes false
System.out.println("FileRead " + ico.canRead()); // Sometimes getting true, Sometimes false
System.out.println("FileWrite " + ico.canWrite()); // Sometimes getting true, Sometimes false
System.out.println("FileExists " + ico.exists()); // always true
System.out.println("FileisFile " + ico.isFile()); // always true
System.out.println("FileisDirectory " + ico.isDirectory()); // always false
}
catch (OutOfMemoryError e) {
e.printStackTrace();
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} catch(NullPointerException ne) {
ne.printStackTrace();
}