当前位置: 首页 > 工具软件 > Jelly > 使用案例 >

android+read_logs这权限有什么用,android – Jelly Bean的READ_LOGS权限(api 16)

毕瀚
2023-12-01

您可以通过从应用程序执行pm grant命令来获取有根设备的权限。可能您必须在此之后重新启动应用程序才能使更改生效:

String pname = getPackageName();

String[] CMDLINE_GRANTPERMS = { "su", "-c", null };

if (getPackageManager().checkPermission(android.Manifest.permission.READ_LOGS, pname) != 0) {

Log.d(TAG, "we do not have the READ_LOGS permission!");

if (android.os.Build.VERSION.SDK_INT >= 16) {

Log.d(TAG, "Working around JellyBeans 'feature'...");

try {

// format the commandline parameter

CMDLINE_GRANTPERMS[2] = String.format("pm grant %s android.permission.READ_LOGS", pname);

java.lang.Process p = Runtime.getRuntime().exec(CMDLINE_GRANTPERMS);

int res = p.waitFor();

Log.d(TAG, "exec returned: " + res);

if (res != 0)

throw new Exception("failed to become root");

} catch (Exception e) {

Log.d(TAG, "exec(): " + e);

Toast.makeText(context, "Failed to obtain READ_LOGS permission", Toast.LENGTH_LONG).show();

}

}

} else

Log.d(TAG, "we have the READ_LOGS permission already!");

应该从onCreate()调用此代码。授予权限后,不再需要root权限。

P.S:超级用户应用程序上的p.waitFor()阻止,延迟您的应用程序启动并可能导致ANR。

 类似资料: