Вопрос по android – Отказ в разрешении Dumpsys в Java

2

Я пытаюсь получить статистику dumpsys [например, dumpsys cpuinfo, аккумулятор dumpsys]. Я выполнил их в Java и записал их в файл. Но я получаю,

2012.06.20 07:32:19
Permission Denial: can't dump cpuinfo from from pid=862, uid=10040 without permission android.permission.DUMP
for all dumpsys commands.

Я добавил разрешение"android.permission.DUMP" а также"android.permission.BATTERY_STATS" в андроид.манифест. Но, не получая resulyПожалуйста, помогите как критический. Код, который я использую, как показано ниже, где cmd содержит dumpsys cpuinfo или аккумулятор dumpsys [любой]

Calendar cal = Calendar.getInstance();
SimpleDateFormat sdf = new SimpleDateFormat("yyyy.MM.dd HH:mm:ss");
System.setOut(new PrintStream(new FileOutputStream("/sdcard/Monitor/"+file+".txt",false)));
System.out.println("\n\n"+sdf.format(cal.getTime()));           
Log.w("cmd-fn", cmd);
process=Runtime.getRuntime().exec(cmd);
process.waitFor();
BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(process.getInputStream()));
String buffer="";

while((buffer=bufferedReader.readLine())!=null)
      {
    //fileobj.write(buffer);
    System.out.println(buffer);
    //output.write(buffer);
}
    buffer="";
    BufferedReader buffered = new BufferedReader(new InputStreamReader(process.getErrorStream()));
    while((buffer=buffered.readLine())!=null)
        {
        Log.w("exception",buffer);
        }

Ниже мои манифестные записи

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.DUMP" />
<uses-permission android:name="android.permission.BATTERY_STATS" />
<uses-permission android:name="android.permission.READ_PHONE_STATE" />
Покажите свой manifest.xml Vipul Shah
@Vipul У меня нет манипуляций с sdk в моем манифесте. Пожалуйста, помогите, где найти? vinod
Попробуй добавить разрешение после использования-sdk Vipul Shah
Ниже мой самый файл. Пожалуйста, помогите & lt;? Xml version = & quot; 1.0 & quot; Кодирование = & Quot; UTF-8 & Quot;? & GT; & lt; manifest package = "com.monitor" Android: VersionCode = & Quot; 1 & Quot; Android: versionName = & Quot; 1,0 & Quot; XMLNS: андроид = & Quot;schemas.android.com/apk/res/android& Quot; & GT; & lt; использует разрешение android: name = & quot; android.permission.WRITE_EXTERNAL_STORAGE & quot; / & GT; & lt; использует разрешение Android: имя = & quot; android.permission.INTERNET & quot; / & gt; & lt; использует-разрешение android: name = & quot; android.permission.DUMP & quot; / & gt; & lt; использует-разрешение android: name = & quot; android.permission.BATTERY_STATS & quot; / & gt; & lt; использует-разрешение android: name = & quot; android.permission.READ_PHONE_STATE & quot; / & gt; vinod

Ваш Ответ

4   ответа
2

ешения сторонним приложениям. Только системные приложения могут теперь получить их.

больше деталей:https://code.google.com/p/acra/issues/detail?id=100

Пожалуйста, улучшите ваш ответ
-1

проверив файл / proc / meminfo, также есть другие интересные файлы в / proc /. Надеемся, что эти файлы будут доступны для чтения в следующих выпусках

Пример кода для получения meminfo:

    public static String showMemInfo() {
    StringBuilder meminfo = new StringBuilder();
    try {
        ArrayList<String> commandLine = new ArrayList<String>();
        commandLine.add("cat");
        commandLine.add("/proc/meminfo");

        Process process = Runtime.getRuntime().exec(commandLine.toArray(new String[commandLine.size()]));
        BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(process.getInputStream()));

        String line;
        while ((line = bufferedReader.readLine()) != null) {
            meminfo.append(line);
            meminfo.append("\n");
        }

    } catch (IOException e) {
        Log.e(LOG_TAG, "Could not read /proc/meminfo", e);
    }

    return meminfo.toString();
}

PS: я знаю, что это не многословно, как dumpsys;)

-1

use top command int adb shell, get most information

top -n 1

You also can cat information in /proc/stat and /proc/pid/stat to get the cpu information

cat /proc/stat

If you wanna details, check Get Memeory Usage

9

android:protectionLevel="signatureOrSystem" поэтому вы не можете получить его, если ваше приложение не подписано с помощью ключа платформы или не установлено в системном разделе.

Если вы не собираете кастомную прошивку (ROM), единственный способ - рутировать телефон.
@Nick Есть ли другой способ, например, изменить андроид: protectionLevel на другое значение, как обычно, и заставить его работать? Иначе как сделать так, чтобы ваше приложение подписывалось ключом платформы? vinod
@Nikolas Я новичок в Android. Есть ли способ программирования для этого? Пожалуйста, объясните с кодом, как рутировать телефон или шаги. Благодарю. Пожалуйста помоги vinod
Может ли кто-нибудь помочь мне в этом? vinod
Как это сделать? Пожалуйста помоги vinod

Похожие вопросы