应用程序在 root 设备上工作,但不能与 SuperSU 一起工作

Application is working on rooted device but not working with SuperSU

我正在开发一款具有某些功能的应用程序,该应用程序只能在获得 root 权限的设备上运行。

几乎完成,应用程序也可以在已获得 root 权限的设备上运行。但是一些设备正在使用 SuperSU,在这种情况下应用程序无法正常工作。

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

我对同一主题做了很多研究,但没有找到任何合适的方法来实现这一点。

我找到了解决方案。

Settings Tab > Default Access下的SuperSU应用中有3个选项。

http://prntscr.com/oyzeq8

  1. Prompt : 这意味着,应用程序会在需要时请求权限。
  2. Grant : 这意味着 SuperSU 将在需要时自动授予应用程序权限。
  3. Deny : 这意味着 SuperSU 将在需要时自动拒绝该应用程序的权限

所以有两种情况。

1。如果 SuperSU 应用将在 Settings Tab > Default Access 中默认设置“Grant”,则应用将不会在应用程序中请求 SuperSU 权限。

2。如果 SuperSU 应用将在 Settings Tab > Default Access 中默认设置“提示”,则应用将在需要时请求 SuperSU 权限。

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

  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 应用程序更改它。

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

谢谢