当前位置: 首页 > 面试题库 >

以编程方式重新启动Android Things

薄龙光
2023-03-14
问题内容

我想使用此代码来重新启动运行 Android Things的 RPI3 : __

public static void Reboot()
{
    try {
        Process proc = Runtime.getRuntime().exec(new String[]{"su", "-c", "reboot"});
        proc.waitFor();
    } catch (Exception ex) {
        ex.printStackTrace();
    }
}

我收到以下错误:

java.io.IOException:无法运行程序“ su”:error = 13,权限被拒绝

我将所有权限添加到清单中

<uses-permission android:name="android.permission.BLUETOOTH" />
<uses-permission android:name="android.permission.BLUETOOTH_ADMIN" />
<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.READ_PHONE_STATE" />
<uses-permission android:name="android.permission.DOWNLOAD_WITHOUT_NOTIFICATION" />
<uses-permission android:name="android.permission.KILL_BACKGROUND_PROCESSES" />
<uses-permission android:name="android.permission.ACCESS_SUPERUSER" />
<uses-permission android:name="android.permission.CHANGE_WIFI_STATE" />
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<uses-permission android:name="android.permission.SET_TIME_ZONE"/>
<uses-permission android:name="android.permission.SHUTDOWN"/>

我想念什么吗?


问题答案:

/system/bin/reboot DP 4中的 二进制文件,与之前的所有开发人员预览一样,具有世界可执行的权限,即以下产量

adb shell ls -l /system/bin | grep reboot
-rwxr-xr-x 1 root shell   ... reboot

话虽如此,仍然可以为任何用户( Android中的 aka应用程序进程)执行二进制文件而无需抓住su。只需在 Java 中执行

重新启动

Runtime.getRuntime().exec("reboot");

关闭电源

Runtime.getRuntime().exec("reboot -p");

无权限 的需要AndroidManifest.xml成功运行二进制文件。

注意:如果在较新的OS版本中更改了安全模型,则此方法可能不起作用。



 类似资料:
  • 问题内容: 请看下面的代码 数据库连接器 数据库UI 在这种情况下,我需要通过右键单击 _数据库节点 启动服务器_来手动启动derby(我正在使用NetBeans)。这是一个嵌入式数据库,这意味着我要将其从一台计算机转移到另一台计算机,并愿意通过双击jar文件来开始,而不是在每台计算机上都配置数据库并手动启动它们。但是,如果我没有手动启动数据库,则会收到错误消息 java.sql.SQLNonTr

  • 请看一下下面的代码 数据库连接器。JAVA 用户界面 在这种情况下,我需要通过右键单击数据库节点手动启动derby(我使用的是NetBeans) JAVAsql。SQLNonTransientConnectionException:java。网ConnectException:连接到端口1527上的服务器本地主机时出错,消息“连接被拒绝:连接”。 无论是在NetBeans内部,如果我没有手动启动它

  • 问题内容: 我需要重新启动我的应用程序,以防万一我重新加载需要从一开始就开始的内容。我试过了 但我收到一个错误 启动路径不可访问 问题答案: 尽管问题本身是微不足道的(忘记了路径),但在其他人需要相同功能的情况下,我还是留下了疑问。 编辑 (Sw3的每日Swift语法更改; Sw4也适用):

  • 问题内容: 我正在用Java编写服务器-客户端应用程序的代码,我需要在服务器端实现本地数据库,因此我决定使用H2数据库引擎。 要添加的另一件事是,我使用TCP连接来启动和运行数据库。到目前为止,这是我整理的内容: 连接字符串在哪里。 这段代码返回一个异常: 我关注了这篇文章。 问题答案: 这样的事情应该工作 并且输出是已建立的连接:H2 / STACKOVERFLOW 已通过h2-1.4.184测

  • 问题内容: 我直接使用默认的os拨号器通过以下方式创建呼叫: 是否可以直接从我的应用程序启动Skype? 我尝试传递一个数字,如下所示: 传递数字失败。 问题答案: 您需要知道Skype软件包名称(例如com.skype.android),然后才能启动它:

  • 因此,我使用下面的代码作为尝试自动启动Appium服务器,但获得连接被拒绝:连接错误。我正在使用Maven和Testng 日志: