-1

我正在开发一个具有某些功能的应用程序只能在有根设备中工作。

几乎完成并且应用程序也可以在有根设备中运行。但有些设备正在使用 SuperSU,在这种情况下应用程序无法正常工作。

我还与自定义 ROM 开发人员进行了研究和讨论,他们说您的应用程序没有要求 SuperSU 权限,但它应该。

我对同一主题进行了许多研究,但没有找到任何适当的方法来实现这一目标。

4

1 回答 1

0

我找到了解决方案。

SuperSU应用程序中有 3 个选项Settings Tab > Default Access

http://prntscr.com/oyzeq8

  1. 提示 :这意味着应用程序将在需要时请求许可。
  2. Grant :这意味着 SuperSU 将在需要时自动授予应用程序的权限。
  3. 拒绝 :这意味着 SuperSU 将在需要时自动拒绝应用程序的权限

所以有两种情况。

1 . 如果SuperSUapp 中默认设置了“ GrantSettings Tab > Default Access ” ,则 app 不会SuperSU在应用中请求权限。

2 . 如果应用程序在 中默认设置了SuperSU提示Settings Tab > Default Access” ,则应用程序将在需要时请求SuperSU许可。

为了请求SuperSU启动应用程序的权限,我使用 RootTools 检查 SuperSU Access。

  1. https://github.com/Stericson/RootTools
  2. https://code.google.com/archive/p/roottools/wikis/Usage.wiki

因此,我只是使用 RootTools 通过一个简单的条件检查了 root 访问权限。

if (RootTools.isAccessGiven())
    Toast.makeText(this, "SU Permission Granted", Toast.LENGTH_SHORT).show();
else
    Toast.makeText(this, "SU Permission Denied", Toast.LENGTH_SHORT).show();

因此,无论何时RootTools.isAccessGiven()执行,它都会自动打开一个弹出窗口,要求应用程序获得 SuperSU 权限。稍后您也可以从 SuperSU 应用程序中更改它。

这就是我发现并实施的。现在一切正常。

谢谢

于 2019-08-29T06:50:49.310 回答