Android 编程关机,重启

与iOS不同,Android开发中可以有很多的私有方法暴露给开发者,操作设备的硬件,例如开,关机重启等等.

以下代码,需要手机Root过后才可生效.

创建工程:
在布局文件中创建两个Button

<?xml version="1.0" encoding="utf-8"?>
<android.support.constraint.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".MainActivity">

    <Button
        android:id="@+id/powerOffBtn"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Power Off"
        tools:layout_editor_absoluteX="16dp"
        tools:layout_editor_absoluteY="16dp" />

    <Button
        android:id="@+id/rebootBtn"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginTop="80dp"
        android:text="Reboot"
        app:layout_constraintTop_toBottomOf="@+id/powerOffBtn"
        tools:layout_editor_absoluteX="16dp" />

</android.support.constraint.ConstraintLayout>

对应的Activity文件

package com.example.iwan.myapplication

import android.support.v7.app.AppCompatActivity
import android.os.Bundle
import android.widget.Button
import android.widget.Toast

class MainActivity : AppCompatActivity() {

    private var powerOffBtn:Button? = null
    private var rebootBtn:Button? = null

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)

        this.powerOffBtn = findViewById(R.id.powerOffBtn)
        this.rebootBtn = findViewById(R.id.rebootBtn)

        /*点击了关机按钮*/
        this.powerOffBtn!!.setOnClickListener {
            Runtime.getRuntime().exec(arrayOf("su", "-c", "reboot -p"))
        }

        /*点击了重启按钮*/
        this.rebootBtn!!.setOnClickListener {
            Runtime.getRuntime().exec(arrayOf("su","-c","reboot "))

        }
    }
}

最重要的是:此操作需要在AndroidManifest.xml文件中进行授权声明
如下所示:


开启权限

模拟器测试如下:


运行界面

点击之后弹出获取Root权限,点击允许,则进入全部重启,关机状态.


获取Root权限

使用Android开发中的Runtime来调用私有的API空着设备硬件,来进行重启,关机的操作.

Runtime.getRuntime().exec(arrayOf("su", "-c", "reboot -p")) // 关机
Runtime.getRuntime().exec(arrayOf("su","-c","reboot ")) // 重启

Android的内核为Linux,实际上su为转换为超级管理员用户.类似Linux命令.
Demo下载地址:https://github.com/CarsonChen0312/AndroidReBootShutDownDemo

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 174,974评论 25 709
  • Ubuntu的发音 Ubuntu,源于非洲祖鲁人和科萨人的语言,发作 oo-boon-too 的音。了解发音是有意...
    萤火虫de梦阅读 99,753评论 9 468
  • 我是被锦娘一路抱回去的,我看见她止不住的流泪,我有些心疼。我想伸手帮她擦一擦泪痕,却发现自己每个地方居然都疼得厉害...
    LYJieYa阅读 1,787评论 0 1
  • 时间总是从指缝间流走,青春的岁月那样的短暂,回首已变的不堪! 长大啦有决定权了,我是那样的害怕,害怕自己的选择,怕...
    妙柯阅读 1,079评论 0 0
  • 靠近你,看见你,然后,没有遗憾的死去。 如果我们这样狂野的人在这阴浊的世界里注定不能堂堂正正的活下去的话,那就来一...
    菱歌上下阅读 3,633评论 1 9