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

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

相关文章

javacv依赖太大导致jar包也大的解决办法

《javacv依赖太大导致jar包也大的解决办法》随着项目的复杂度和依赖关系的增加,打包后的JAR包可能会变得很大,:本文主要介绍javacv依赖太大导致jar包也大的解决办法,文中通过代码介绍的... 目录前言1.检查依赖2.更改依赖3.检查副依赖总结 前言最近在写项目时,用到了Javacv里的获取视频

Spring 依赖注入与循环依赖总结

《Spring依赖注入与循环依赖总结》这篇文章给大家介绍Spring依赖注入与循环依赖总结篇,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧... 目录1. Spring 三级缓存解决循环依赖1. 创建UserService原始对象2. 将原始对象包装成工

JWT + 拦截器实现无状态登录系统

《JWT+拦截器实现无状态登录系统》JWT(JSONWebToken)提供了一种无状态的解决方案:用户登录后,服务器返回一个Token,后续请求携带该Token即可完成身份验证,无需服务器存储会话... 目录✅ 引言 一、JWT 是什么? 二、技术选型 三、项目结构 四、核心代码实现4.1 添加依赖(pom

基于Python实现自动化邮件发送系统的完整指南

《基于Python实现自动化邮件发送系统的完整指南》在现代软件开发和自动化流程中,邮件通知是一个常见且实用的功能,无论是用于发送报告、告警信息还是用户提醒,通过Python实现自动化的邮件发送功能都能... 目录一、前言:二、项目概述三、配置文件 `.env` 解析四、代码结构解析1. 导入模块2. 加载环

linux系统上安装JDK8全过程

《linux系统上安装JDK8全过程》文章介绍安装JDK的必要性及Linux下JDK8的安装步骤,包括卸载旧版本、下载解压、配置环境变量等,强调开发需JDK,运行可选JRE,现JDK已集成JRE... 目录为什么要安装jdk?1.查看linux系统是否有自带的jdk:2.下载jdk压缩包2.解压3.配置环境

Spring-DI依赖注入全过程

《Spring-DI依赖注入全过程》SpringDI是核心特性,通过容器管理依赖注入,降低耦合度,实现方式包括组件扫描、构造器/设值/字段注入、自动装配及作用域配置,支持灵活的依赖管理与生命周期控制,... 目录1. 什么是Spring DI?2.Spring如何做的DI3.总结1. 什么是Spring D

Springboot项目构建时各种依赖详细介绍与依赖关系说明详解

《Springboot项目构建时各种依赖详细介绍与依赖关系说明详解》SpringBoot通过spring-boot-dependencies统一依赖版本管理,spring-boot-starter-w... 目录一、spring-boot-dependencies1.简介2. 内容概览3.核心内容结构4.

Linux查询服务器系统版本号的多种方法

《Linux查询服务器系统版本号的多种方法》在Linux系统管理和维护工作中,了解当前操作系统的版本信息是最基础也是最重要的操作之一,系统版本不仅关系到软件兼容性、安全更新策略,还直接影响到故障排查和... 目录一、引言:系统版本查询的重要性二、基础命令解析:cat /etc/Centos-release详

更改linux系统的默认Python版本方式

《更改linux系统的默认Python版本方式》通过删除原Python软链接并创建指向python3.6的新链接,可切换系统默认Python版本,需注意版本冲突、环境混乱及维护问题,建议使用pyenv... 目录更改系统的默认python版本软链接软链接的特点创建软链接的命令使用场景注意事项总结更改系统的默

在Linux系统上连接GitHub的方法步骤(适用2025年)

《在Linux系统上连接GitHub的方法步骤(适用2025年)》在2025年,使用Linux系统连接GitHub的推荐方式是通过SSH(SecureShell)协议进行身份验证,这种方式不仅安全,还... 目录步骤一:检查并安装 Git步骤二:生成 SSH 密钥步骤三:将 SSH 公钥添加到 github