安卓系统短信源码依赖库、可运行的源码

2024-08-31 23:18

本文主要是介绍安卓系统短信源码依赖库、可运行的源码,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

安卓系统短信源码库  点击打开链接

安卓系统短信源码  点击打开链接


新项目需要做短信模块功能,此短信模块非安卓系统短信模块,是利用了360张勇主导的开源框架,进行URL拦截,剥离出来的短信模块

第一步:

去下载安卓系统源码,通过对比4.4和4.4+版本的源码,果断用了4.4的源码,为什么呢?因为4.4短信源码类少,将来bug少,短信模块的代码如下截图


第二步:

我就拿As来说把(我起初是在eclipse上调试好的,后来移到As上),将上面几个类导入进来,肯定是bug挺多的,后来在源码里找到关联的类,我先贴出来最后的类


我先说下几个bug点:

1、首先,这个短信模块的代码是一个依赖库存在的(后期可能移到到项目中),所以说在主项目配置文件中需要填写如下

xmlns:tools="http://schemas.android.com/tools"
<uses-sdk tools:overrideLibrary="com.android.providers.telephony"/>
2、因为360安全模块是依赖的23的api,起先怕依赖报错,我就依赖了22的api,避免不知道的冲突

 compileSdkVersion 22buildToolsVersion "23.0.2"defaultConfig {minSdkVersion 22targetSdkVersion 23versionCode 1versionName "1.0"}

3、因为代码中有好多错误,就拿一个错误来说,setAppOps(AppOpsManager.OP_READ_SMS, AppOpsManager.OP_WRITE_SMS);这个是报错的,解决方法如下

因为我的代码是摘抄的4.4的系统短信源码,所以我就从网上下载了4.4源码编译后的class文件,这里就先上图下这些class文件


4、class文件下载完毕后,就去下面截图的目录,蓝色框是修改的android.jar  红色框是自带的,我们是需要蓝色框修改后的jar包,因为这个jar可以解决诸如setAppOps这些方法,是利用编译后的.class文件跟sdk自带的android进行对比修改得出



5、然后在看下配置文件的cp,这里说2点哈,改成true,然后自定义短信url


 
 
 

  <providerandroid:name="com.android.providers.telephony.TelephonyProvider"android:authorities="telephony_launcher"android:exported="true"android:multiprocess="true" /><providerandroid:name="com.android.providers.telephony.MmsProvider"android:authorities="mms_launcher"android:exported="true"android:multiprocess="true"android:readPermission="android.permission.READ_SMS"android:writePermission="android.permission.WRITE_SMS" ><grant-uri-permission android:pathPrefix="/part/" /><grant-uri-permission android:pathPrefix="/drm/" /></provider><providerandroid:name="com.android.providers.telephony.MmsSmsProvider"android:authorities="mms-sms_launcher"android:exported="true"android:multiprocess="true"android:readPermission="android.permission.READ_SMS"android:writePermission="android.permission.WRITE_SMS" /><providerandroid:name="com.android.providers.telephony.SmsProvider"android:authorities="sms_launcher"android:exported="true"android:multiprocess="true"android:readPermission="android.permission.READ_SMS"android:writePermission="android.permission.WRITE_SMS" />



6、接下来就拿sms来说明把,

setAppOpps刚开始为了解决这个方法,修改了android.jar因为是系统自带的,刚开始也没有去注释啊、去掉代码之的,就是怕改多了后期bug无从下手,setAppOpps方法需要去掉,不然的话是不能创建的,我通过log才解决这个bug的

android4.4默认短信机制是为了不让后台默默发送短信,但不幸的是,原生并没有禁止非默认短信发短信

还有我写这博客,这只是第一步只是插入可以了,貌似删除修改我还没有测试,我之前写过demo,4.4以后默认的系统短信是不能直接进行删除、修改的,得需要反射方法,才可以进行操作的


	@Overridepublic boolean onCreate() {//		setAppOps(AppOpsManager.OP_READ_SMS, AppOpsManager.OP_WRITE_SMS);mOpenHelper = MmsSmsDatabaseHelper.getInstance(getContext());return true;}

7、然后就是修改一些bug存在的反射方法

8、然后就是删掉那个报红的,还有干掉style文件


到此为止基本上bug就差不多了


这里说下eclipse上bug会比较少,可以通过引用lib方式方便,么有as里面那些多余的style啊 themebug

本人也是4月初才开始用as的,对as蛋疼的狠,但是as有一个优于eclipse的地方,eclipse编译有时候编译库不通过,一直卡,as编译很快





这篇关于安卓系统短信源码依赖库、可运行的源码的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1125271

相关文章

Linux系统中查询JDK安装目录的几种常用方法

《Linux系统中查询JDK安装目录的几种常用方法》:本文主要介绍Linux系统中查询JDK安装目录的几种常用方法,方法分别是通过update-alternatives、Java命令、环境变量及目... 目录方法 1:通过update-alternatives查询(推荐)方法 2:检查所有已安装的 JDK方

Linux系统之lvcreate命令使用解读

《Linux系统之lvcreate命令使用解读》lvcreate是LVM中创建逻辑卷的核心命令,支持线性、条带化、RAID、镜像、快照、瘦池和缓存池等多种类型,实现灵活存储资源管理,需注意空间分配、R... 目录lvcreate命令详解一、命令概述二、语法格式三、核心功能四、选项详解五、使用示例1. 创建逻

MySQL多实例管理如何在一台主机上运行多个mysql

《MySQL多实例管理如何在一台主机上运行多个mysql》文章详解了在Linux主机上通过二进制方式安装MySQL多实例的步骤,涵盖端口配置、数据目录准备、初始化与启动流程,以及排错方法,适用于构建读... 目录一、什么是mysql多实例二、二进制方式安装MySQL1.获取二进制代码包2.安装基础依赖3.清

Java Spring的依赖注入理解及@Autowired用法示例详解

《JavaSpring的依赖注入理解及@Autowired用法示例详解》文章介绍了Spring依赖注入(DI)的概念、三种实现方式(构造器、Setter、字段注入),区分了@Autowired(注入... 目录一、什么是依赖注入(DI)?1. 定义2. 举个例子二、依赖注入的几种方式1. 构造器注入(Con

在IntelliJ IDEA中高效运行与调试Spring Boot项目的实战步骤

《在IntelliJIDEA中高效运行与调试SpringBoot项目的实战步骤》本章详解SpringBoot项目导入IntelliJIDEA的流程,教授运行与调试技巧,包括断点设置与变量查看,奠定... 目录引言:为良驹配上好鞍一、为何选择IntelliJ IDEA?二、实战:导入并运行你的第一个项目步骤1

使用Python构建一个高效的日志处理系统

《使用Python构建一个高效的日志处理系统》这篇文章主要为大家详细讲解了如何使用Python开发一个专业的日志分析工具,能够自动化处理、分析和可视化各类日志文件,大幅提升运维效率,需要的可以了解下... 目录环境准备工具功能概述完整代码实现代码深度解析1. 类设计与初始化2. 日志解析核心逻辑3. 文件处

golang程序打包成脚本部署到Linux系统方式

《golang程序打包成脚本部署到Linux系统方式》Golang程序通过本地编译(设置GOOS为linux生成无后缀二进制文件),上传至Linux服务器后赋权执行,使用nohup命令实现后台运行,完... 目录本地编译golang程序上传Golang二进制文件到linux服务器总结本地编译Golang程序

Linux系统性能检测命令详解

《Linux系统性能检测命令详解》本文介绍了Linux系统常用的监控命令(如top、vmstat、iostat、htop等)及其参数功能,涵盖进程状态、内存使用、磁盘I/O、系统负载等多维度资源监控,... 目录toppsuptimevmstatIOStatiotopslabtophtopdstatnmon

解决未解析的依赖项:‘net.sf.json-lib:json-lib:jar:2.4‘问题

《解决未解析的依赖项:‘net.sf.json-lib:json-lib:jar:2.4‘问题》:本文主要介绍解决未解析的依赖项:‘net.sf.json-lib:json-lib:jar:2.4... 目录未解析的依赖项:‘net.sf.json-lib:json-lib:jar:2.4‘打开pom.XM

IDEA Maven提示:未解析的依赖项的问题及解决

《IDEAMaven提示:未解析的依赖项的问题及解决》:本文主要介绍IDEAMaven提示:未解析的依赖项的问题及解决,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝... 目录IDEA Maven提示:未解析的依编程赖项例如总结IDEA Maven提示:未解析的依赖项例如