2016-11-07 10 views
-1

私は奇妙な問題があります。先週、私は自分のコードを魅力的に働かせました。私は根っからのタブレットで作業していますが、コードからデバッグモードを設定していますが、理由はわかりません。今朝私のアプリケーションを実行しました。これに使用しているコマンドはもう機能しません。許可の拒否など。 "しかし、私のデバイスの端末からコマンドを入力すると、それは動作します...どんな助け?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

ここにあります!私は最終的にそれを修正した!呼び出しが完了するまでアクセス権が十分に速く設定されていないため、単にprocesseの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(); 
    } 
} 
関連する問題