• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号
您的位置:首页 > 程序设计 >Android > 使用AIDL调用远程服务设置系统时间,aidl调用系统

使用AIDL调用远程服务设置系统时间,aidl调用系统

作者:网友 字体:[增加 减小] 来源:互联网 时间:2017-05-26

网友通过本文主要向大家介绍了aidl,android aidl,aidl机制,android aidl详解,android studio aidl等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com

使用AIDL调用远程服务设置系统时间,aidl调用系统


 

在实际工作中,经常遇到客户需要用代码设置系统时间的需求,但是Android非系统应用是无法设置系统时间的。于是,我设计了一个使用系统签名的时间设置服务,客户通过bind调用服务里的方法就能达到设置时间的目的。

 

这里用到的技术有:

1、Signapk签名

2、AIDL

3、bind service

 

将应用变成系统应用

1、AndroidManifest.xml中加入android:sharedUserId="android.uid.system"

2、使用系统密钥签名。系统签名在Android源码目录中的位置是"build\target\product\security",下面的platform.pk8和platform.x509.pem两个文件。然后用Android提供的Signapk工具来签名,signapk的源代码是在"build\tools\signapk"下,用法为"signapk platform.x509.pem platform.pk8 input.apk output.apk"

 

时间设置服务 CustomServices

 

ICustomServices.aidl 里定义了设置日期和设置时间方法

1 interface ICustomServices {
2 
3      void setDate(int year,int month,int day);
4      void setTime(int hourOfDay, int minute);
5 
6 }

CustomService.Java  
 1 public class CustomService extends Service {
 2     private static final String TAG = CustomService.class.getSimpleName();
 3 
 4     private MyBinder mBinder;
 5 
 6     @Override
 7     public void onCreate() {
 8         super.onCreate();
 9 
10         if (mBinder == null) {
11             mBinder = new MyBinder();
12         }
13 
14     }
15 
16 
17     @Override
18     public IBinder onBind(Intent intent) {
19         return mBinder;
20     }
21 
22 
23     class MyBinder extends ICustomServices.Stub {
24 
25         @Override
26         public void setDate(int year, int month, int day) throws RemoteException {
27 
28             setDate(CustomService.this, year, month - 1, day);
29         }
30 
31         @Override
32         public void setTime(int hourOfDay, int minute) throws RemoteException {
33             setTime(CustomService.this, hourOfDay, minute);
34         }
35 
36         void setDate(Context context, int year, int month, int day) {
37             Calendar c = Calendar.getInstance();
38 
39             c.set(Calendar.YEAR, year);
40             c.set(Calendar.MONTH, month);
41             c.set(Calendar.DAY_OF_MONTH, day);
42             long when = c.getTimeInMillis();
43 
44             if (when / 1000 < Integer.MAX_VALUE) {
45                 ((AlarmManager) context.getSystemService(Context.ALARM_SERVICE)).setTime(when);
46             }
47         }
48 
49         void setTime(Context context, int hourOfDay, int minute) {
50             Calendar c = Calendar.getInstance();
51 
52             c.set(Calendar.HOUR_OF_DAY, hourOfDay);
53             c.set(Calendar.MINUTE, minute);
54             c.set(Calendar.SECOND, 0);
55             c.set(Calendar.MILLISECOND, 0);
56             long when = c.getTimeInMillis();
57 
58             if (when / 1000 < Integer.MAX_VALUE) {
59                 ((AlarmManager) context.getSystemService(Context.ALARM_SERVICE)).setTime(when);
60             }
61         }
62     }
63     
64 }

 

 AndroidManifest.xml

 1 <?xml version="1.0" encoding="utf-8"?>
 2 <manifest xmlns:android="http://schemas.android.com/apk/res/android"
 3     package="com.rs.customservices" android:sharedUserId="android.uid.system">
 4     <application
 5         android:allowBackup="true"
 6         android:icon="@mipmap/ic_launcher"
 7         android:label="@string/app_name"
 8         android:supportsRtl="true"
 9         android:theme="@style/AppTheme">
10 
11 
12         <service
13             android:name="com.rs.customservices.CustomService"
14             android:enabled="true"
15             android:exported="true">
16             <intent-filter>
17                 <action android:name="com.rs.CustomService" />
18             </intent-filter>
19         </service>
20     </application>
21 
22 </manifest>

 

 

编译完后使用系统签名将APK文件签名成系统应用。

 

 

 客户程序

 将上面工程中的 ICustomServices.aidl 拷入到客户工程中,注意:包的目录结构也需要拷入。

 

CustomServiceActivity.java

 1 public class CustomServiceActivity extends Activity {
 2     private static  final String TAG="CustomServiceActivity";
 3 
 4     ICustomServices mCustomServices;
 5     @Override
 6     protected void onCreate(Bundle savedInstanceState) {
 7         super.onCreate(savedInstanceState);
 8         setContentView(R.layout.activity_custom_service);
 9 
10         Intent intentCust = new Intent();
11         intentCust.setAction("com.rs.CustomService"


 
分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

  • 使用AIDL调用远程服务设置系统时间,aidl调用系统
  • android基础部分再学习--AIDL
  • Android 事件分发
  • android 浅谈Aidl 通讯机制,androidaidl
  • 【Android】由浅到深理解AIDL
  • Android IPC 之 AIDL(一)
  • android使用AIDL实现跨进程通讯(IPC)
  • 使用Android studio创建的AIDL编译时找不到自定义类的解决办法,androidaidl
  • Android中AIDL详解

相关文章

  • 2017-05-26Socket for android 简单实例,socketandroid
  • 2017-05-26android高仿微信拍照、多选、预览、删除(去除相片)相冊功能
  • 2017-05-26ARM汇编中LDR伪指令和LDR指令
  • 2017-05-26Android 学习之路,android学习之路
  • 2017-05-26Android Studio之代码提示快捷键冲突设置,androidstudio
  • 2017-05-26安卓图片滑动,实现带小点的导航页面效果,安卓小点
  • 2017-05-26谈谈App的混合开发,App混合开发
  • 2017-05-26Android网络编程(二)HttpClient与HttpURLConnection
  • 2017-05-26retrofit2中ssl的Trust anchor for certification path not found问题,retrofit2anchor
  • 2017-05-26Service的启动与停止、绑定与解绑,service停止绑定

文章分类

  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号

最近更新的内容

    • Android体系结构,android体系结构介绍
    • 浅谈Android 通过ADB Wireless无线调试应用
    • Android 中的mvvm,Androidmvvm
    • Android对应用程序签名,android签名
    • 自定义控件详解(一):Paint类与Canvas类,paintcanvas
    • 用原生VideoView进行全屏播放时的问题,videoview全屏播放
    • Android 中的R文件 丢失或无法更新,android
    • Android下文件的压缩和解压(Zip格式)
    • 重写dispatchKeyEvent方法 按返回键back 执行两次的解决办法,dispatchkeyevent
    • 精品干货丨APP常用导航框架,干货丨app导航

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有