2016-11-07 2 views
-1

У меня есть странная проблема. На прошлой неделе мой код работал как шарм. Я работаю над укоренившимся планшетом, и я устанавливаю режим Debug on от кода, но понятия не имею, почему, я запустил приложение сегодня утром, и команда, с которой я использую эту функцию, больше не работает, я получаю " Разрешение отказа и т. Д. "НО, когда я набираю команду с терминала моего устройства, она работает ... Любая помощь?pm grant <PACKAGE_NAME><PERMISSION_NAME> не работает

private void grantPermission(){ 
    try { 
     Process suProcess = Runtime.getRuntime().exec("su"); 
     DataOutputStream os = new DataOutputStream(suProcess.getOutputStream()); 

     Log.e("PACKAGE", getPackageName()); 

     os.writeBytes("adb shell" + "\n"); 
     os.flush(); 

     os.writeBytes("pm grant "+getPackageName()+" android.permission.CHANGE_CONFIGURATION" + "\n"); 
     os.flush(); 

     os.writeBytes("pm grant "+getPackageName()+" android.permission.WRITE_SECURE_SETTINGS" + "\n"); 
     os.flush(); 
    } catch (Exception e){ 
     e.printStackTrace(); 
     Log.e("SETTINGS", "FAIL"); 
    } 
} 
+0

Действительно ли это когда-либо работало из кода? Также он работает снова после того, как вы установили его вручную? – tynn

+0

Да, да, да, да. – ArteFact

ответ

0

Вот оно! Я, наконец, исправил это! Разрешение не было установлено достаточно быстро до вызова, я просто добавил вызов метода waitFor() процесса, и он снова работал. Но я все еще удивляюсь, почему раньше это работало!

private void grantPermission(){ 
    try { 
     Process suProcess = Runtime.getRuntime().exec("su"); 

     DataOutputStream os = new DataOutputStream(suProcess.getOutputStream()); 
     os.writeBytes("pm grant "+this.getPackageName()+" android.permission.WRITE_SECURE_SETTINGS" + "\n"); 
     os.writeBytes("pm grant "+this.getPackageName()+" android.permission.CHANGE_CONFIGURATION" + "\n"); 
     os.writeBytes("exit\n"); 
     os.flush(); 

     suProcess.waitFor(); 
    } catch (Exception e){ 
     e.printStackTrace(); 
    } 
} 
Смежные вопросы