Почему intent.getStringextra () возвращает NULL, когда трансляция отправляется с использованием команды Shell "Am"?Android

Форум для тех, кто программирует под Android
Anonymous
Почему intent.getStringextra () возвращает NULL, когда трансляция отправляется с использованием команды Shell "Am"?

Сообщение Anonymous »

У меня есть приложение, которое работает как UID 1000 (System) < /code>, и я хочу запустить команды оболочки в качестве пользователя системы через это приложение и отображать вывод как тост.

Код: Выделить всё

package com.ishacker.android.cmdreceiver;

import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.widget.Toast;
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.util.Objects;

public class CmdReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
String Cmd = intent.getStringExtra("Cmd");
try {
Process process = Runtime.getRuntime().exec(Cmd);
BufferedReader reader = new BufferedReader(
new InputStreamReader(process.getInputStream()));

int read;
char[] buffer = new char[4096];
StringBuffer output = new StringBuffer();
while ((read = reader.read(buffer)) > 0) {
output.append(buffer, 0, read);
}
reader.close();
process.waitFor();
if (!Objects.equals(intent.getStringExtra("App"), "yes")) {
Toast.makeText(context, output.toString(), Toast.LENGTH_LONG).show();
}
else {
// Code to handle what happens when it is launched using intent.putExtra("App","yes")
}
} catch (Exception e) {
throw new RuntimeException(e);
}
}
}
android manifest.xml:

Код: Выделить всё












< /code>
Это команда, которую я использовал для трансляции: < /p>
am broadcast com.ishacker.android.cmdreceiver/.CmdReceiver --es Cmd "whoami"
По -видимому, intent.getstringextra ("cmd") всегда возвращает null по какой -то причине.>

Подробнее здесь: https://stackoverflow.com/questions/797 ... using-am-s

Вернуться в «Android»