码迷,mamicode.com
首页 > 移动开发 > 详细

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

时间:2016-04-20 15:10:54      阅读:243      评论:0      收藏:0      [点我收藏+]

标签:

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

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


新项目需要做短信模块功能,此短信模块非安卓系统短信模块,是利用了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 22
    buildToolsVersion "23.0.2"

    defaultConfig {
        minSdkVersion 22
        targetSdkVersion 23
        versionCode 1
        versionName "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

技术分享




  <provider
            android:name="com.android.providers.telephony.TelephonyProvider"
            android:authorities="telephony_launcher"
            android:exported="true"
            android:multiprocess="true" />

        <provider
            android: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>
        <provider
            android: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" />
        <provider
            android: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以后默认的系统短信是不能直接进行删除、修改的,得需要反射方法,才可以进行操作的


	@Override
	public 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://blog.csdn.net/u013210620/article/details/51198244

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!