标签:android style blog http color io java ar for
开始在网上搜索很多关于关机的程序。网上主流关机程序是在Java成发送要求关机的Intent.,如下:
Intent intent = new Intent(Intent.ACTION_REQUEST_SHUTDOWN); intent.putExtra(Intent.EXTRA_KEY_CONFIRM, false); intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); mContext.startActivity(intent);
需要加上相关的权限:
android:sharedUserId="android.uid.system"
<uses-permission android:name="android.permission.SHUTDOWN"/>
这里涉及到一个问题:要在程序里面加上系统程序权限。如何在程序里面加上系统权限呢?
我的解决方案是先写一个系统关机程序,生成shutdown.apk应用程序,然后项目代码在调用这个shutdown.apk就可以完美关机了。
1.要获得shutdown.apk应用程序。然而这个应用程序需要提升system app级别。获取系统级别最好在源码下编译生成apk,
这样很容易提升system app级别。
1.1、创建Shutdown工程。主要涉及ShutDownActivity.java和AndroidMainfest.xml.
1.2、ShutDownActivity.java源码如下:
public class ShutDownActivity extends Activity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); Intent it = new Intent("android.intent.action.ACTION_REQUEST_SHUTDOWN"); it.putExtra("android.intent.extra.KEY_CONFIRM", false); it.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); startActivity(it); } }
1.3、AndroidMainfest.xml源码如下:
<?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.hutao.shutdown" android:versionCode="1" android:sharedUserId="android.uid.system"
android:versionName="1.0" > <uses-sdk android:minSdkVersion="8" android:targetSdkVersion="10" /> <uses-permission android:name="android.permission.SHUTDOWN"/> <application android:allowBackup="true" android:icon="@drawable/ic_launcher" android:label="@string/app_name" android:theme="@style/AppTheme" > <activity android:name="com.hutao.shutdown.ShutDownActivity" android:label="@string/app_name" > <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> </application> </manifest>
1.4、将建好的工程拷到/packages/apps/目录下面,然后在现在源码顶层source build/envsetup.sh。我的源码顶层为
rowboat-android下面。然后将res下面的drawable-xxhdpi、values-sw600dp、value-sw720dp-land删除。在
/rowboat-android/packages/apps/Shutdown/下面创建Android.mk文件
LOCAL_PATH:= $(call my-dir) include $(CLEAR_VARS) LOCAL_MODULE_TAGS := optional LOCAL_SRC_FILES := $(call all-java-files-under, src) LOCAL_PACKAGE_NAME := shutdown LOCAL_CERTIFICATE := platform include $(BUILD_PACKAGE) # Use the folloing include to make our test apk. include $(call all-makefiles-under,$(LOCAL_PATH))
然后在当前目录下进行mm命令编译,在out/target/product/system/app/生成shutdown.apk
2.调用shutdown.apk关机。
2.1调用shutdown.apk代码
Intent myIntent = new Intent(); myIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); myIntent.setClassName("com.hutao.shutdown", "com.hutao.shutdown.ShutDownActivity"); startActivity(myIntent);
2.2在调用关机界面时候有两种形式:
即it.putExtra("android.intent.extra.KEY_CONFIRM", false);//false不显示确认关机的对话框,直接关机
或it.putExtra("android.intent.extra.KEY_CONFIRM", true);//true显示确认关机的对话框,让用户选择是否确认关机
标签:android style blog http color io java ar for
原文地址:http://www.cnblogs.com/chuji1988/p/3946935.html