Comment définir une propriété de système à partir d'une application Android?

voix
0

Je dois faire , setpropmais d'une application.

En ce moment je suis en train de courir juste comme une commande shell:

public class MainActivity extends AppCompatActivity {

    private static final String TAG = test:MainActivity;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        exec(setprop service.adb.tcp.port 5555);
    }

    private void exec(String cmd) {
        Process proc = null;
        BufferedReader successResult = null;
        BufferedReader errorResult = null;

        Runtime runtime = Runtime.getRuntime();
        Log.d(TAG, exec command:  + cmd);
        try {
            proc = runtime.exec(cmd);
            successResult = new BufferedReader(new InputStreamReader(proc.getInputStream()));
            errorResult = new BufferedReader(new InputStreamReader(proc.getErrorStream()));
            String s;
            while ((s = successResult.readLine()) != null) {
                Log.d(TAG, exec command:  + s);
            }
            while ((s = errorResult.readLine()) != null) {
                Log.d(TAG, exec command:  + s);
            }
        } catch (IOException e) {
            Log.e(TAG, Error running shell command:, e);
        } finally {
            try {
                if (successResult != null) {
                    successResult.close();
                }
                if (errorResult != null) {
                    errorResult.close();
                }
            } catch (IOException e) {
                Log.e(TAG, Error running shell command:, e);
            }

            if (proc != null) {
                proc.destroy();
            }
        }
    }
}

Cela me donne:

commande exec: setprop service.adb.tcp.port 5555

commande exec: setprop: pas définir la propriété « service.adb.tcp.port » à « 5555 »

Comment puis-je définir une propriété de système à partir d'une application?

Edit: Désolé, j'ai-je ajouté mon appareil est enraciné et cette application est une application de système.

Créé 07/11/2018 à 20:17
source utilisateur
Dans d'autres langues...                            


1 réponses

voix
2

Vous ne pouvez pas définir cette propriété particulière d'une application régulière. Il est protégé par le système.

Avant Android 5, vous avez besoin de votre application pour avoir sharedUserId="android.uid.system"dans votre manifeste, et d'Android 5 et jusqu'à il doit être sharedUserId="android.uid.shell".

Cependant, si votre application a un de ces ID utilisateur, il doit être signé avec le certificat de système à installer, de sorte que vous ne pouvez le faire sur les conseils de développement et ROM personnalisés.

Une autre option est si votre appareil est ancré, vous pouvez exécuter la commande setprop avec su.

Créé 07/11/2018 à 21:29
source utilisateur

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more