zoukankan      html  css  js  c++  java
  • android 2.3.4代码实现关机

    开始在网上搜索很多关于关机的程序。网上主流关机程序是在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显示确认关机的对话框,让用户选择是否确认关机
    
    
    


    
    
    


  • 相关阅读:
    [玩]用安卓手机搭建免费Linux服务器
    SSM自学教程
    outlook 2016 系列1--收件归类
    软件开发流程模型
    Android P系统编译之使用PRODUCT_COPY_FILES拷贝文件或文件夹
    车载系统交互的三秒原则
    同理心地图
    Excel 操作
    Android中5种最常见的内存泄漏问题以及解决办法
    android动画相关
  • 原文地址:https://www.cnblogs.com/chuji1988/p/3946935.html
Copyright © 2011-2022 走看看