由于客户需要我们提供API给到他们实现定时开关机功能

做的是展锐的方案,简单看下原厂如何实现该功能

1、展锐创建了一个sqlite数据库用来存放定时开关机相关数据

vendor\sprd\platform\packages\apps\Settings\src\com\sprd\settings\timerpower\AlarmProvider.java

private SQLiteOpenHelper mOpenHelper;

private static final int ALARMS = 1;
    private static final int ALARMS_ID = 2;
    private static final UriMatcher sURLMatcher = new UriMatcher(
            UriMatcher.NO_MATCH);

static {
        sURLMatcher.addURI("com.android.settings.alarm", "timerpower", ALARMS); // uri 表名
        sURLMatcher.addURI("com.android.settings.alarm", "timerpower/#", ALARMS_ID);
    }

public static class DatabaseHelper extends SQLiteOpenHelper {
        private static final String DATABASE_NAME = "timerpower.db";//数据库名字
        private static final int DATABASE_VERSION = 6;

public DatabaseHelper(Context context) {
            super(context, DATABASE_NAME, null, DATABASE_VERSION);
            Log.v("AlarmProvider DatabaseHelper");
        }

@Override
        public void onCreate(SQLiteDatabase db) {
            Log.v("AlarmProvider DB  OnCreate");
            db.execSQL("CREATE TABLE timerpowers (" +
                       "_id INTEGER PRIMARY KEY," +
                       "hour INTEGER, " +              //小时
                       "minutes INTEGER, " +        //分钟
                       "daysofweek INTEGER, " +        //重复周期
                       "alarmtime INTEGER, " +      //时间
                       "enabled INTEGER, " +        //开关
                       "vibrate INTEGER, " +        //震动
                       "message TEXT, " +            //定时开机or关机
                       "alert TEXT);");                //提示语

// insert default alarms
            String insertMe = "INSERT INTO timerpowers " +
                    "(hour, minutes, daysofweek, alarmtime, enabled, vibrate, message, alert) " +
                    "VALUES ";
            db.execSQL(insertMe + "(8, 30, 31, 0, 0, 0, 'on', '');");//默认定时开机时间 重复星期
            db.execSQL(insertMe + "(9, 00, 96, 0, 0, 0, 'off', '');");//默认定时关机时间 重复星期
        }

2、使用sqlite数据库打开db文件

通过sqlite我们可以清晰的查看各个表单的数据

该数据库文件存放在该目录下 data/user_de/0/com.android.settings/databases/timerpower.db

3、研究原厂实现的过程通过SQLiteDatabase进行数据更新

第三方发送广播

Intent intent = new Intent("android.intent.action.TIMER_POWER");
  intent.addFlags(Intent.FLAG_RECEIVER_INCLUDE_BACKGROUND);
  intent.putExtra("hour", "11");  //小时
  intent.putExtra("minutes", "11"); //分钟
  intent.putExtra("enabled", "0或1");//0表示关闭 1表示打开 
  intent.putExtra("daysofweek", "0或127");//0表示不重复 127表示每天重复
  intent.putExtra("message", "on或off");//on 表示定时开机 off 表示定时关机
  context.sendBroadcast(intent);

vendor\sprd\platform\packages\apps\Settings\src\com\sprd\settings\timerpower\AlarmInitReceiver.java

@Override
    public void onReceive(Context context, Intent intent) {
        if(intent.getAction().equals("android.intent.action.TIMER_POWER")){
            AlarmProvider.DatabaseHelper datebaseHelper=new              AlarmProvider.DatabaseHelper(context);
            SQLiteDatabase db=datebaseHelper.getWritableDatabase();
            ContentValues contentValues=new ContentValues();
            contentValues.put("hour",11);//小时
            contentValues.put("minutes",12);//分钟
            contentValues.put("enabled",1);//是否打开
            contentValues.put("daysofweek",0);//每天重复
            db.update("timerpowers",contentValues,"message=?",new String[]{"off"});//on 代表定时开机 off 代表定时关机 
            db.close();
        }

}

注册action

packages\apps\Settings\AndroidManifest.xml

<receiver android:name="com.sprd.settings.timerpower.AlarmInitReceiver" >
            <intent-filter>
                <action android:name="android.intent.action.BOOT_COMPLETED" />
                <action android:name="android.intent.action.TIME_SET" />
                <action android:name="android.intent.action.TIMER_POWER" /> //add
                <action android:name="android.intent.action.TIMEZONE_CHANGED" />
                <action android:name="android.intent.action.LOCALE_CHANGED" />
            </intent-filter>
        </receiver>

Android 8.1 第三方apk通过数据库调用系统定时开关机功能相关推荐

  1. Android系统定时开关机实现简述

    本实验基于Android6.0 一 概述: Android系统的定时开关机的实现分为定时开机和定时关机两部分,其中定时关机比较容易,因为不需要底层驱动的配合,只需要发特定广播就可以完成,而定时开机的实 ...

  2. Android 通讯录学习笔记之——目标:调用系统通讯录的编辑功能

    资料来源:http://www.eoeandroid.com/thread-37271-1-1.html 代码功能:调用系统自带的编辑联系人功能 代码片段 // 如下用法在ANADOIR 2.3.6上 ...

  3. Android开发 调用系统相机相册图片功能,解决小米手机拍照或者图片横竖相反问题,及小米手机相册图片路径问题

    Android开发 调用系统相机相册图片功能,解决小米手机拍照或者图片横竖相反问题,及小米手机相册图片路径问题 1.调用相机,兼容7.0 AndroidManifest配置 <providera ...

  4. android 实现发送彩信方法 (mms),非调用,android 实现发送彩信方法 (MMS),非调用系统界面...

    最近有个需求,不去调用系统界面发送彩信功能.做过发送短信功能的同学可能第一反应是这样: 不使用 StartActivity,像发短信那样,调用一个类似于发短信的方法 SmsManager smsMan ...

  5. Android P+通过反射调用系统API实现高级功能

    Android P+通过反射调用系统API实现高级功能 1. 打开隐藏API 1.1 导入FreeReflection包 1.2 打开隐藏API 2. 反射系统服务并调用相应方法 通过反射调用系统AP ...

  6. android调用系统相机实现拍照功能

    在实现拍照的功能时遇到了很多问题,搜索了很多资料,尝试了很多办法,终于解决了,下面简要的描述下在开发过程中遇到的问题. 虽然之前看过android开发的书,但是没有做过东西,这次也是临时决定让我做一个 ...

  7. 高通平台 android 12 定时开关机

    高通平台 android 12 定时开关机 关机 关机实现 开机实现 总结 关机 AlarmManager取消了RTC_POWEROFF_WAKEUP 不支持通过AlarmManager设置关机唤醒设 ...

  8. Android:android定时开关机

    android定时关机 (记住一定要在源码下编译生成apk,也就是放在源码的package/app下编译!!!) 先看一下简单的图形界面吧,比较简单的实现定时关机!!!(我的上传资源中有整个工程:注: ...

  9. Android 10 Settings应用如何去掉一级菜单定时开关机

    代码路径: packages/apps/Settingssrc/com/android/settings/core/gateway/SettingsGateway.java packages/apps ...

最新文章

  1. Apache的管理及优化web
  2. Poj 3246 Balanced Lineup(线段树基础)
  3. mysql没法修改数据_MySQL学习笔记之数据的增、删、改实现方法
  4. PowerShell与活动目录
  5. VueCli3 项目结构和具体作用
  6. vagrant 报unknown filesystem type 'vboxsf' 解决方案
  7. markdown入门4--矩阵空格公式方程组
  8. 中维云视通录像文件存储及设置_视频监控存储方式选择,磁盘阵列与NVR优势对比...
  9. 视频点击预测-TOP1方案
  10. Lua 服务器Socket通信实例(转)
  11. oracle 导入单表,oracle 10g 中单个数据表的导入、导出
  12. axure rp9是什么软件?如何在Mac中安装使用?
  13. 【代码审计】YUNUCMS_v1.0.6 后台代码执行漏洞分析
  14. Cosmos 是什么?
  15. POJ 2210 Metric Time【日期】
  16. Linux shell的简单学习
  17. MM的爆强语录(转)
  18. 动手深度学习——Pytorch 入门语法一
  19. MIPI CSI 进一步理解
  20. 医院里的CR、DR、CT、磁共振、B超都是什么?

热门文章

  1. android 图片读写,Android读取本地照片和视频相册
  2. create volume
  3. Oracle exp导出
  4. 输出n行数字三角形(已修改)
  5. 测试基础-动态白盒测试
  6. 森林防火无线监控系统解决方案
  7. DataBinding详解
  8. linux实践感悟与体会100字,掌上综素b5学科时间活动心得体会50字
  9. Ubuntu下安装Luma qq
  10. tACS恢复老年人认知控制能力的EEG功能和DTI结构网络机制