Android app实现重启、关机功能

本文介绍了一个简单的Android应用,用于实现手机的重启和关机功能。开发者需要具备手机平台编译系统的权限,代码中展示了如何创建Activity并监听重启和关机按钮,以及发送相应的广播来执行操作。在AndroidManifest.xml中添加特殊属性,并提供了Android.mk文件的部分内容。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

最近要复现一个BUG,需要无限重启进行测试,就花费点时间写个简单的应用来实现手机重启、关机功能。

注:因为需要很高的权限才可以正常使用,所以必须具有手机平台编译系统,手机开发者使用,本人亲测成功。

首先在app开发工具中新建项目AppReboot;在xml中定义重启、关机按钮;下面就是唯一Activity代码:

public class RebootActivity extends Activity implements OnClickListener{
private Button rebootclick,shutdownclick;
// 是否显示关机确认的对话框
// false 不显示确认关机的对话框,直接关机
// true 显示确认关机的对话框,让用户选择是否确认关机
    public static final boolean showShutdownDialog = false;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        rebootclick=(Button) findViewById(R.id.reboot_click);
        shutdownclick=(Button) findViewById(R.id.shutdown_click);
        rebootclick.setOnClickListener(this);
        shutdownclick.setOnClickListener(this);
    }
    
    @Override
    public void onClick(View arg0) {
    // TODO Auto-generated method stub
    switch (arg0.getId()) {
case R.id.reboot_click:
onReboot(rebootclick);
break;
case R.id.shutdown_click:
onShutdown(shutdownclick);
break;
default:
break;
}
    }        
    /**
     * 发送广播.
      * @param view
      */
    public void onReboot(View view) {
        Intent reboot = new Intent(Intent.ACTION_REBOOT);
        reboot.putExtra("nowait", 1);
        reboot.putExtra("interval", 1);
        reboot.putExtra("window", 0);
        sendBroadcast(reboot);
    }

/**
      * 启动 Activity.
     * @param view
     
*/
        public void onShutdown(View view) {
        Intent shutdown = new Intent(Intent.ACTION_REQUEST_SHUTDOWN);
        shutdown.putExtra(Intent.EXTRA_KEY_CONFIRM, showShutdownDialog);
        shutdown.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_NEW_TASK);
        startActivity(shutdown);
    }    
}

AndroidManifest.xml中要增加   android:sharedUserId="android.uid.system"属性

然后是Android.mk文件如下:

LOCAL_PATH:= $(call my-dir)
include $(CLEAR_VARS)
LOCAL_MODULE_TAGS := optional
LOCAL_CERTIFICATE := platform
LOCAL_SRC_FILES := $(call all-java-files-under, src)
LOCAL_PACKAGE_NAME := reboot
#LOCAL_PROGUARD_FLAG_FILES := proguard.flags
include $(BUILD_PACKAGE)
##################################################
include $(CLEAR_VARS)
# Use the folloing include to make our test apk.
include $(call all-makefiles-under,$(LOCAL_PATH))

最后建议style.xml删除,在AndroidManifest不使用主题,这样编译就不会因为主题风格而报错了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值