1. 程式人生 > >Android系統關機或重啟的幾種實現方式

Android系統關機或重啟的幾種實現方式

預設的SDK並沒有提供應用開發者直接的Android系統關機或重啟的API介面,一般來講,實現Android系統的關機或重啟,需要較高的許可權(系統許可權甚至Root許可權)。所以,在一般的APP中,如果想要實現關機或重啟功能,要麼是在App中宣告系統許可權,要麼是通過某種“間接”的方式,比如廣播或反射,來間接實現系統關機或重啟。再者,就是放在原始碼環境中進行編譯,這樣做有一個好處,就是可以直接呼叫Android中不公開的API,這是Eclipse+SDK沒法達到的效果。下面是我自己嘗試的幾種方式:

一. 傳送廣播方式

Broadcast是Android的四大基本元件之一,也就是我們常說的廣播。Android系統本身就包含了許多廣播,時時刻刻在監聽著系統中註冊的每一個廣播並隨時準備響應操作。其中,就有關於關機或重啟的廣播:Intent.ACTION_REQUEST_SHUTDOWN和Intent.ACTION_REBOOT,通過傳送這兩個廣播,Android就能自動接收廣播,並響應關機或重啟的操作。ACTION_REQUEST和ACTION_REBOOT是Intent.java是宣告的兩個字串常量

?
1 2 3 public static final String ACTION_REBOOT = "android.intent.action.REBOOT"; public static final String ACTION_REQUEST_SHUTDOWN = "android.intent.action.ACTION_REQUEST_SHUTDOWN";

Intent.java位於原始碼/frameworks/base/core/java/android/content/Intent.java下面。具體實現方法如下
?
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 //廣播方式關機重啟 case R.id.shutdown_btn1: Log.v(TAG, "broadcast->shutdown"); Intent intent = new Intent(Intent.ACTION_REQUEST_SHUTDOWN); intent.putExtra(Intent.EXTRA_KEY_CONFIRM,
false); //其中false換成true,會彈出是否關機的確認視窗 intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); startActivity(intent); break; case R.id.reboot_btn1: Log.v(TAG, "broadcast->reboot"); Intent intent2 = new Intent(Intent.ACTION_REBOOT); intent2.putExtra("nowait", 1); intent2.putExtra("interval", 1); intent2.putExtra("window",

相關推薦

Android系統關機實現方式

預設的SDK並沒有提供應用開發者直接的Android系統關機或重啟的API介面,一般來講,實現Android系統的關機或重啟,需要較高的許可權(系統許可權甚至Root許可權)。所以,在一般的APP中,如果想要實現關機或重啟功能,要麼是在App中宣告系統許可權,要麼是通

Android學習之 圓角邊框的實現方式

首先我將貼出幾種實現圓角邊框的dmeo程式效果圖: 方式一:使用shape元素填充背景,設定圓角/帶弧度的角        1、首先在 \res\drawable下新建Shape為根元素的資原始檔:corners_bg.xml, 程式碼如下: <?xml vers

Android 系統自動關機關鍵操作

Android系統實現自動關機或重啟操作方法: 方法一: XML檔案: 提升apk系統許可權,增加關機許可權。 <?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schema

Android開發實現關機

//關機 private void shutdown(){ try{ Class ServiceManager = Class.forName("android.os.ServiceManager"); Method g

系統關機、註銷詳解

ali eboot sans rep 快速 posit tle msu bsp 在重新啟動Linux系統的同時把內存中的信息寫入硬盤,應使用()命令實現#shutdown -r now#halt#reboot#init3正確答案:Ahalt是最簡單的關機命令,其實際上是調用

Linux 基礎教程 41-系統關機

mage linux系統 本機 gem tro 電源 ges 就是 系統 ? ? 在Linux系統中,僅僅是關機和重啟相關的命令就至少有5個,shutdown、 halt、poweroff、reboot、init。各個命令作用如下所示: 命令 說明 shutd

用Radeon RAMDisk在Windows 10中建立關機不消失的記憶體虛擬盤

                  之前用ImDisk建立的記憶體虛擬盤每次關機或重啟後就會消失,想要開機自動建立記憶體虛擬盤雖然可以用批處理來實現,但還是有點不爽。下載試用了Radeon RAMDisk(Radeon_RAMDisk_4_4_0_RC34.msi),這次建立的記憶體虛擬盤關機或重啟不會消失。

VMware 12.1.1 長模式不相容/中斷導致虛擬CPU進入關機

“軟體虛擬化與此平臺上的長模式不相容. 禁用長模式. 沒有長模式支援, 虛擬機器將不能執行 64位程式.”和“中斷導致虛擬 CPU 進入關機狀態. 如果中斷髮生在虛擬機器外部, 其會造成物理機重啟. “經過2個小時的折磨,總算解決了,這裡總結總結。 先說說樓主嘗試過

[Linux--Shell]使用命令列關機

問題描述 對於Linux系統而言,許多時候是用於伺服器之類的,此時是不會開啟桌面系統的,這樣通過命令列的方式進行操作,可以有效節省系統RAM的使用,使盡量多的資源供重要的service使用。因此使用命令列的方式在Linux系統下操作就非常流行。 關機操作

C#控制Windows系統關機和註銷的代碼

rgs res nsh gof oid win shu eve nta 如下資料是關於C#控制Windows系統關機、重啟和註銷的代碼。 protected void btnShutDown_Click(object sender, EventArgs e)

Delphi 訊息攔截篇 -- 之攔截系統關機、登出

最近做的專案中需要攔截系統關機,因為我在FormCloseQuery中總是把CanClose設為False,不攔截關機的話直接導致系統中的關機、重啟、登出都失效了!導致使用者不能關機!(提示使用者說要關機的話直接按電源^^)這樣肯定是不行的! 要完成這個功能只需要攔截到W

Qt5實現系統關機的功能

最近公司的專案需要軟體自帶系統關機和重啟的功能,因此在msdn搜尋了一下實現方法,windows下直接使用下列程式碼就可以了 xxx.h檔案中新增 BOOL  MySystemShutdownOrRestart(); xxx.cpp檔案中新增 #include<win

Android中圓形圖的實現方式

在Android開發中,圓形圖片是很常見的,例如淘寶的寶貝,QQ的聯絡人頭像等都是圓形的圖片, 但是Android原生的ImageView又不能顯示圓形的圖片,這就需要我們自己去實現一個圓形圖了 一、自定義View實現圓形圖 我們可以去改造Android系統自帶的Imag

Android文字垂直滾動、縱向走馬燈的實現方式

方法一、使用系統控制元件ViewFlipper方式: 佈局檔案: <ViewFlipper android:id="@+id/view_flipper" android:layout_width="300dp

Android非同步機制的實現方式剖析

今天來談一談android中非同步處理機制,眾所周知在android中由於UI主執行緒是不安全的,因此不能直接在子執行緒中操作UI,一般我們會用到非同步機制來解決這種問題,下面會介紹兩種常用的非同步機制Thread+Handler與Async Task機制; 一、Thre

JS陣列去實現方法

//使用indexOf function unique1(arr) { var result=[]; for(var i=0;i<arr.length;i++){ if(result.indexOf(arr[i])==-1){ result.push(ar

Android 單例模式實現方式及簡析

一.定義: 確保某一個類只有一個例項,而且自行例項並向整個系統提供這個例項 二.使用場景: 避免產生過多的物件消耗過多的資源,或者某種型別的物件只應該有且只有一個。例如,建立一個物件需要消耗的資源過多,如訪問資料庫或者IO 資源。 三.實現單例模式的關鍵

【程序間通訊】Android 程序間通訊的實現方式

一、整體結構 下面將逐一介紹4種通訊方式 二、4種通訊方式 1、Activity Android內建了許多可供其他程式跨程序訪問的Activity,比如跳至打電話頁面(指定Action,uri跨程序訪問) Intent call

Android高仿qq及微信底部選單的實現方式

最近專案沒那麼忙,想著開發app的話,有很多都是重複,既然是重複的,那就沒有必要每次都去寫,所以就想著寫一個app通用的基本框架,這裡說的框架不是什麼MVC,MVP,MVVM這種,而是app開發的通用模式,一般的app都是底部有幾個選單按鈕,類似qq這樣的,只不

關於Android圓角ImageView的實現方式

在實際的開發中,我們經常會遇到需要圓角ImageView的情況,但是這種ImageView官方是沒有提供的,所以需要我們去自己重寫ImageView來達到圓角的效果,但是實現這種圓角效果其實有幾種不同的實現方式,所以這一篇就對不同的實現方式進行講解,並簡單分析。 一.BitmapShader方式 首先簡