Android 8.1 第三方apk通过数据库调用系统定时开关机功能
由于客户需要我们提供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通过数据库调用系统定时开关机功能相关推荐
- Android系统定时开关机实现简述
本实验基于Android6.0 一 概述: Android系统的定时开关机的实现分为定时开机和定时关机两部分,其中定时关机比较容易,因为不需要底层驱动的配合,只需要发特定广播就可以完成,而定时开机的实 ...
- Android 通讯录学习笔记之——目标:调用系统通讯录的编辑功能
资料来源:http://www.eoeandroid.com/thread-37271-1-1.html 代码功能:调用系统自带的编辑联系人功能 代码片段 // 如下用法在ANADOIR 2.3.6上 ...
- Android开发 调用系统相机相册图片功能,解决小米手机拍照或者图片横竖相反问题,及小米手机相册图片路径问题
Android开发 调用系统相机相册图片功能,解决小米手机拍照或者图片横竖相反问题,及小米手机相册图片路径问题 1.调用相机,兼容7.0 AndroidManifest配置 <providera ...
- android 实现发送彩信方法 (mms),非调用,android 实现发送彩信方法 (MMS),非调用系统界面...
最近有个需求,不去调用系统界面发送彩信功能.做过发送短信功能的同学可能第一反应是这样: 不使用 StartActivity,像发短信那样,调用一个类似于发短信的方法 SmsManager smsMan ...
- Android P+通过反射调用系统API实现高级功能
Android P+通过反射调用系统API实现高级功能 1. 打开隐藏API 1.1 导入FreeReflection包 1.2 打开隐藏API 2. 反射系统服务并调用相应方法 通过反射调用系统AP ...
- android调用系统相机实现拍照功能
在实现拍照的功能时遇到了很多问题,搜索了很多资料,尝试了很多办法,终于解决了,下面简要的描述下在开发过程中遇到的问题. 虽然之前看过android开发的书,但是没有做过东西,这次也是临时决定让我做一个 ...
- 高通平台 android 12 定时开关机
高通平台 android 12 定时开关机 关机 关机实现 开机实现 总结 关机 AlarmManager取消了RTC_POWEROFF_WAKEUP 不支持通过AlarmManager设置关机唤醒设 ...
- Android:android定时开关机
android定时关机 (记住一定要在源码下编译生成apk,也就是放在源码的package/app下编译!!!) 先看一下简单的图形界面吧,比较简单的实现定时关机!!!(我的上传资源中有整个工程:注: ...
- Android 10 Settings应用如何去掉一级菜单定时开关机
代码路径: packages/apps/Settingssrc/com/android/settings/core/gateway/SettingsGateway.java packages/apps ...
最新文章
- Apache的管理及优化web
- Poj 3246 Balanced Lineup(线段树基础)
- mysql没法修改数据_MySQL学习笔记之数据的增、删、改实现方法
- PowerShell与活动目录
- VueCli3 项目结构和具体作用
- vagrant 报unknown filesystem type 'vboxsf' 解决方案
- markdown入门4--矩阵空格公式方程组
- 中维云视通录像文件存储及设置_视频监控存储方式选择,磁盘阵列与NVR优势对比...
- 视频点击预测-TOP1方案
- Lua 服务器Socket通信实例(转)
- oracle 导入单表,oracle 10g 中单个数据表的导入、导出
- axure rp9是什么软件?如何在Mac中安装使用?
- 【代码审计】YUNUCMS_v1.0.6 后台代码执行漏洞分析
- Cosmos 是什么?
- POJ 2210 Metric Time【日期】
- Linux shell的简单学习
- MM的爆强语录(转)
- 动手深度学习——Pytorch 入门语法一
- MIPI CSI 进一步理解
- 医院里的CR、DR、CT、磁共振、B超都是什么?