以编程方式关闭设备

2023-12-10

我正在编写一个应用程序,旨在在一种特定的设备型号(运行基于 Amlogic 的固件的 Android 机顶设备)上运行。我具有 root 功能,并且我的应用程序是使用固件证书签名的。

我的应用程序是设备的主要焦点,如果能够启动完全关闭电源将会很有帮助。

我没有shutdown命令。我确实有reboot命令。

reboot -p没有帮助。它只是冻结设备,同时保持通电状态。

The PowerManager好一步,但它将设备设置为睡眠模式,而不是完全关闭:

PowerManager pm = (PowerManager)getSystemService(Service.POWER_SERVICE);
pm.goToSleep(SystemClock.uptimeMillis());

我愿意接受所有建议——黑客或其他建议。 Android版本预计维持在4.2.2.


Intents

该命令将导致设备重新启动。Intent.ACTION_SHUTDOWN似乎没有做任何事情。此意图是否可能只是报告关闭,而不是启动关闭?

Intent i = new Intent(Intent.ACTION_REBOOT);
i.putExtra("nowait", 1);
i.putExtra("interval", 1);
i.putExtra("window", 0);
sendBroadcast(i);

我最幸运的是通过 Intent 请求关闭:

Intent i = new Intent("android.intent.action.ACTION_REQUEST_SHUTDOWN");
i.putExtra("android.intent.extra.KEY_CONFIRM", true);
startActivity(i);

关闭线程

那就更近一点了。绝对有趣。你能找到一个使用它的例子吗?

到目前为止我已经想出了这个:

Class<?> sdClass = Class.forName("com.android.server.power.ShutdownThread");
Constructor<?> con = sdClass.getDeclaredConstructors()[0];
con.setAccessible(true);

for (Method m : sdClass.getDeclaredMethods()) {
    if (m.getName().matches("shutdown")) {
        m.setAccessible(true);
        m.invoke(sdClass, PlayerActivity.this, false);
    } else if (m.getName().matches("rebootOrShutdown")) {
        m.setAccessible(true);
        m.invoke(sdClass, PlayerActivity.this, false);
    } else if (m.getName().matches("beginShutdownSequence")) {
        m.setAccessible(true);
        m.invoke(sdClass, PlayerActivity.this, false);
    }
}

shutdown and beginShutdownSequence create NullPointerExceptions(你明白为什么吗?)和rebootOrShutdown创建一个InvocationTargetException由于UnsatisfiedLinkError...它找不到本机方法:

java.lang.UnsatisfiedLinkError:找不到本机方法: com.android.server.power.PowerManagerService.nativeShutdown:()V at com.android.server.power.PowerManagerService.nativeShutdown(本机 方法)在 com.android.server.power.PowerManagerService.lowLevelShutdown(PowerManagerService.java:2163) 在 com.android.server.power.ShutdownThread.rebootOrShutdown(ShutdownThread.java:543) 在 com.android.server.power.ShutdownThread.run(ShutdownThread.java:393)

lowLevelShutdown是配置为关闭(而不是重新启动)时所有功能最终达到的功能。因此,弄清楚如何避免此链接错误可能是关键。


就我而言,我认为不可能按照我想要的方式关闭设备。

我最接近目标的是使用:

Intent i = new Intent("android.intent.action.ACTION_REQUEST_SHUTDOWN");
i.putExtra("android.intent.extra.KEY_CONFIRM", true);
startActivity(i);

这会弹出一个对话框来关闭设备。这是完美的解决方案,但就我而言,使用它会导致设备崩溃。可能是我的设备有些特殊,其他设备不会有这些限制。

无论如何,我希望我的测试能够帮助其他人完成他们的任务。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

以编程方式关闭设备 的相关文章

  • 您的应用中的 Google Analytics SDK

    我按照这里的说明进行操作 https developers google com analytics devguides collection android v3 https developers google com analytics
  • 如何在Android上获取当前播放曲目的路径[关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 我想编写一个应用程序将当前播放的音乐流式传输到另一台设备 两个设备之间的连接确实有效 我还可以通过 wifi 传输一些字符串 但在获取
  • Android Studio Canary 3.4 Canary 4:错误:功能插件不支持variant.getApplicationId()

    自从我在新版本上更新了我的项目以来Android Studio 3 4 金丝雀 4 gradle 同步失败 因为 ERROR variant getApplicationId is not supported by feature plug
  • 配置项目 ':react-native-gesture-handler' 时出现问题

    大家好 我已经尝试了很长时间来解决这个问题 但不幸的是我还没有弄清楚如何解决 希望你们能帮助我 所以我有一个反应本机项目和我的朋友 以及我的一位朋友添加 React native gesture handler 包供我们使用 他对这个包没有
  • 在 Android 中使用 awt

    我有一个绘制图表的 Java Swing 应用程序 它使用 Graphics2D 调用和 awt 对象 例如 Rectangle 等 在某些时候我可能想将其移植到 Android 上 我知道我无法在 Android 上使用 Graphics
  • 如何以编程方式判断蓝牙设备是否已连接?

    我了解如何获取已配对设备的列表 但如何判断它们是否已连接 这一定是可能的 因为我看到它们列在我手机的蓝牙设备列表中 并且它说明了它们的连接状态 将蓝牙权限添加到您的AndroidManifest中
  • 与通用地图相比,MapView 的分辨率较差

    我刚刚收到 HTC Desire 进行测试 我注意到 残留在小于整个屏幕的框架中的地图视图不如通用地图应用程序那么清晰 有什么办法解决这个问题吗 您应该使用 API 级别 4 或更高级别编译应用程序 然后在 AndroidManifest
  • 不使用eclipse安装Android模拟器

    如何在没有eclipse的电脑上安装android模拟器 android模拟器无需安装eclipse 只需下载 android sdk 并安装即可 安装android SDK之前必须先安装JDK 完成后安装成功 您将获得两个应用程序 SDK
  • Android 游戏偶尔出现延迟

    我正在用 Java 制作一个简单的 Android 游戏 我注意到每 20 40 秒就会出现一些烦人的延迟 首先 我认为它们是由垃圾收集器引起的 但当我检查 LogCat 时 我发现游戏滞后时没有垃圾收集 每当游戏开始滞后时 我都会标记日志
  • 如何从画布中删除路径区域(Android)

    我需要裁剪角落ImageView 不要将它们弄圆 而是擦除每个角上的三角形 似乎唯一的方法就是覆盖onDraw方法并使用从画布上删除这些区域Path 问题是我没有纯色背景 所以我需要擦除这些区域 但不要用某种颜色填充它们 我为此使用以下代码
  • Android中如何使用intent加载本地html页面?

    我的 asset 目录中有一个 html 文件 我必须使用 Intent 将其加载为浏览器应用程序 这是我的代码 但它不起作用 startActivity new Intent Intent ACTION VIEW Uri parse fi
  • 使用 Box2d(适用于 Android)进行碰撞检测?

    有人可以解释一下使用 box2d for android 进行碰撞检测的工作原理吗 我无法理解 BBContactListener 以什么方式工作 BBContactListener listener new BBContactListen
  • 使用 twitter API 1.1 在 Android 应用程序中显示 twitter feed

    基本上我想展示这个提要 https en twitter com epl live https en twitter com epl live在我的应用程序中 由于 twitter 更改了其 api 1 1 每个调用都必须经过授权 我发现的
  • 活动中列表视图中的粘滞行

    我的列表视图中只有一行应该是粘性的 而不是粘性标题中带有字母的部分或部分 我真的很感激任何关于列表视图在活动中粘性一行而不是片段的帮助 我该怎么做 我真的很感谢任何帮助 提前致谢 使用如下代码 class MyAsyncTask exten
  • Android - 检测视图上的双击和三次点击

    我一直在尝试构建一个可以检测双敲击和三敲击的敲击检测器 在我的努力失败后 我在网上搜索了很长时间以找到可以使用的东西 但没有运气 奇怪的是 像这样的图书馆如此稀缺 有什么帮助吗 你可以尝试这样的事情 尽管我通常建议不要使用三次点击作为一种模
  • Android:选择 EditField 上焦点上的所有文本

    我试图让 Android 在获得焦点时选择 EditText 字段中的所有文本 我在布局中使用此属性 在两个字段上 android selectAllOnFocus true 我不确定这是否相关 但为了将光标移动到第一个可编辑字段 前面 还
  • 在 VideoView 开始播放之前,TextView 不会显示

    我编写了一个android应用程序 它有两个视图 TextView上方的VideoView 位于ScrollView内部 我遇到了一个问题 直到VideoView开始播放视频 TextView才显示 并且我有一个黑屏 这可能需要很长一段时间
  • 如何以编程方式检测android中可用的底部软导航栏?

    我试图通过 android 程序确定软导航栏 我没有找到直接的方法来确定 有没有办法找到导航栏的可用性 软导航栏图像在这里 以下方法对我有用并在许多设备上进行了测试 public boolean hasNavBar Resources re
  • Android:我的应用程序太大并给出“无法执行 dex:方法 ID 不在 [0, 0xffff]: 65536”?

    我正在尝试将我的应用程序与 Box Dropbox 和 Google Drive 集成 所有这 3 项服务都需要许多第 3 方 jar 此外 我的应用程序已经需要一些第三方 jar 现在 当我尝试从 Eclipse 运行我的应用程序时 出现
  • 如何从另一个活动更新 Recyclerview 数据

    我有两个活动 MainActivity 和 Addlogactivity 我正在更新 Addlogactivity 中的数据 该数据应显示在 mainactivity recyclerview 中 数据未在数据库中更新 MianActivi

随机推荐

  • 溢出:隐藏在 div 标签上会影响背景颜色

    的定义overflow hidden指出 the overflowing content is completely hidden not accessible to the user from http quirksmode org cs
  • 使用 import java.* 来使用“java”包下的所有子包怎么样?

    import java 为什么我不能进行此导入 我没有导入 java 包的特定子包中的所有类 而是尝试导入 java 包下的所有子包 如何导入所有内置类 java中没有子包这种东西 java util stream不是 的子包java ut
  • STRCHR 与 STRRCHR 有何区别? [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心以获得指导 我想知道这两种不同用途之间
  • 通过RemoteView设置GradientDrawable

    这就是我想要做的 我有一个小部件 我想根据用户选择的颜色设置其背景 它必须是一个渐变 背景是通过设置 LinearLayout 的背景来设置的 为了进行测试 我对虚拟背景进行了如下操作 remoteViews setInt R id lay
  • WPF DataBound ListBox 添加动画但不滚动

    我有一个绑定到 ObservableCollection 的 WPF ListBox 当我向其中添加项目时 我想要一些动画来 吸引 新来者 的注意力 有许多使用 DataTemplate 触发器和 FrameworkElment Loade
  • 如何为 Telerik RadGrid 中的列标题指定颜色

    我在 asp net 中创建了一个 telerik RadGrid 我的要求是为列标题提供我自己的颜色 我们怎样才能实现这一点 下面是我正在使用的代码结构
  • Seahorse::Client::NetworkingError 使用 Rails 上传 Amazon S3 文件

    在我的 Rails 4 应用程序中 我尝试使用 aws sdk 下载常规 png 文件 然后将其上传到我的 s3 存储桶 使用gem aws sdk gt 2 在开发环境中 代码运行完全正常 但如果我尝试rails s e producti
  • IBM MQ 客户端在 10 分钟后断开连接:IBM.XMS.IllegalStateException

    我正在使用 IBM 的这个示例 我刚刚复制并粘贴了代码 https github com ibm messaging mq dev patterns blob master dotnet dotNetGet cs 我正在连接到 MQ 服务器
  • 如何初始化参数化构造函数的对象数组

    我需要初始化参数化构造函数的对象数组 我怎样才能以最好的方式做到这一点 include
  • 当您使用 Seq(1,2,3) 创建 Seq 对象时会发生什么?

    当您评估表达式时到底会发生什么 Seq 1 2 3 我是 Scala 新手 现在对各种集合类型有点困惑 Seq是一种特质 对吗 所以当你这样称呼它时 Seq 1 2 3 它一定是某种伴生对象吗 或不 它是某种扩展的类吗Seq 最重要的是 返
  • 在 Xamarin 应用程序中使用 Identity Server

    我正在尝试让 Xamarin 应用程序与身份服务器一起使用 我已按照以下步骤操作 1 下载这个 https github com IdentityModel IdentityModel OidcClient Samples tree mas
  • 为什么这段显示图像的代码在构建到 jar 中时会出现“错误”?

    我想通过在 JLabel 上绘制 BufferedImage 来显示图像 x y Offset是在JLabel的中间绘制一个较小的图像 如果我在 IDE 中运行代码 它会正常工作并在我的 JFrame 上显示图像 如果我现在将类构建到 ja
  • 使用 Unicode emoji 动态创建 NSString

    我有字符串 Hi there U0001F603 它正确显示了表情符号 例如Hi there 如果我把它放在UILabel 但我想像这样动态创建它 NSString stringWithFormat Hi there U0001F60 ld
  • 了解分支预测

    有一些关于分支预测的疑问我无法自信地弄清楚 假设我必须使用静态分支预测器 分支预测应该发生在管道的哪个阶段 如何知道预测出错了 数据路径如何知道发生了错误预测 如果它知道发生了错误预测 它如何发送信号以占用未占用的分支 出了问题后 我必须占
  • 在通过代码连接的两个表之间使用更新时出错

    是以下 python pandas DataFrame ID country money code money add other time 832932 Other NaN 00000 NaN N2 N2 N4 0 days 01 37
  • 如何使用值从字典中删除条目

    我有一个字典集合如下 mydic addvalue key1 val1 mydic addvalue key2 val1 mydic addvalue key3 val1 mydic addvalue key4 val2 mydic add
  • 从嵌入式网络聊天发送事件

    我正在尝试从嵌入式网络聊天发送和接收事件 该网络聊天遵循本示例中的网站代码https github com ryanvolum backChannelBot并且机器人实现了来自的代码Bot框架获取内嵌聊天控制页面的ServiceUrl埃泽奎
  • Java - 冻结鼠标

    有没有办法在Java中将鼠标锁定在一个位置一段时间 我试过这个 while timer true Robot bot new Robot bot mouseMove x y 但是 当用户移动鼠标时 它会令人不愉快地来回跳跃 从用户拖动的位置
  • .Net Mvc:如何触发 Application_Error() 管理它们的错误?

    我管理我的所有应用程序错误Application Error in 全局 asax protected void Application Error object sender EventArgs e Exception exception
  • 以编程方式关闭设备

    我正在编写一个应用程序 旨在在一种特定的设备型号 运行基于 Amlogic 的固件的 Android 机顶设备 上运行 我具有 root 功能 并且我的应用程序是使用固件证书签名的 我的应用程序是设备的主要焦点 如果能够启动完全关闭电源将会