- 浏览: 926225 次
- 性别:
- 来自: 上海
最新评论
-
liu149339750:
我勒个去,搜到你的博客了,关注!
Android make脚本简记 -
ihopethatwell:
楼主,这个修改时间有个问题,退出修改界面就不保存设置的时间了, ...
Android中如何修改系统时间(应用程序获得系统权限) -
flyar520:
你好...我也遇到屏幕半屏刷成黑屏的问题...但是我的时在开机 ...
Android横屏状态下返回到壁纸界面屏幕刷新问题 -
flyar520:
你好...我也遇到屏幕半屏刷成黑屏的问题...但是我的时在开机 ...
Android横屏状态下返回到壁纸界面屏幕刷新问题 -
taowayi:
推荐android一键反编译神器 apkdec
Android apk反编译
Android 2.1消息应用
首先从manifest.xml中开始。在这个应用中,它扩展了默认的android.app.Application类。在
com.android.mms.MmsApp类中覆写了onCreate()方法进行系统初始化、覆写onTerminate()
方法做相关清理工作。最重要的是 <application>标记设置了(任务吸引力) taskAffinity
=“android.task.mms”、allowTaskReparenting ="true" 这是两个与
Task有关的属性,那么何为任务(Task)呢?
A pplication就是一个.apk文件,由若干个组件(可能会包括 Activity、Service、Receiver 或者 ContentProvider )构成,它是一个物理上的独立存在。
而Task则是指用户借助Application提供的功能完成某件事情,例如:发送一条信息给老朋友。通常一个Task操作所涉及的内容不会超
过 A pplication边界 ,但在Android中却不是这样,Android允许一个Task操作
横跨多个Apllication。还以向老朋友发送信息为例,在该任务中,至少需要一个用来输入目标电话号码和消息内容的用户界面——即Android中
的Activity组件(这是 Messaging应用中的内容
),如果进一步要求目标号码是从联系人列表(或通话列表)中选择,而非手工输入,那么就涉及到跨 Apllication调用‘联系人应用’中的列表组件
了 (也是一个 Activity )。。因此以上两个属性前者设置了 Activity的吸引力(Affinity)值,后者使得
Activity可以在不同的Task中自由切换。
Messaging中的Receiver
R eceiver广播 接收器用于响应系统中的各种广播事件并执行相关业务代码的组件,常用于完成如:启动service、显示Activity等 任务 。在Messagin应用中一共有7个 R eceiver:
1、.transaction.SmsReceiver : 短消息 广播 接收器,它负责处理与收到短消息相关的广播事件。。触发该接收器运行的intent有两个:
A.android.intent.action.BOOT_COMPLETED--->Android系统启动完成时会发出该广播,即SmsReceiver会在系统启动完成时接收到调用;
B.com.android.mms.transaction.MESSAGE_SENT --->定义在
SmsReceiverService.java中的常量,被用在SmsMessageSender.sendMessage方法中——即短消息发送后
触发的广播事件;
完全和预想的一样,在 SmsReceiver中会启动
SmsReceiverService,启动代码在beginStartingService方法里。值得注意的是它同时还做了“屏幕唤醒锁定
(WakeLock)” 操作,最终在service启动完成后,通过回调用finishStartingService方法,解除了屏幕唤醒锁定。
SmsReceiver.java中有编译错误,因为无法访问android.provider.Telephony.Sms.Intents。
其实 Intents
所在位置是:myeclair\frameworks\base\core\java\android\provider
\Telephony.java,它被标记为@hide
2、 . transaction.PrivilegedSmsReceiver :该接收器是SmsReceiver的子类,唯一的区别在于该Receiver被声明有permission为android.permission.BROADCAST_SMS。
3、.transaction.MmsSystemEventReceiver :Mms系统事件接收器,它负责 在收到新消息时 向通知区域(即标题栏)显示小图标,和 重新发送在发件箱中的MM。触发该接收器运行的两个Intent是:
A. android.intent.action.BOOT_COMPLETED ---> :与SmsReceiver中的情况相同;
B.android.intent.action.CONTENT_CHANGED ---> :连接方式改变时系统会发出该广播,即在连接方式变化,例如从gprs-->wifi时该接收器将被调用 ;
在MmsSystemEventReceiver类中,程序一旦获得数据连接时就会启动TransactionService服务;当连接方式改
变时还会调用PduCache.purge()方法清理缓存;还有当系统刚刚启动时 会同步通知区域的图标、未读消息个数等信息。
MmsSystemEventReceiver.java中有编译错误,因为它无法访问以下类:
1、com.google.android.mms.util.PduCache:位置-myeclair\frameworks\base
\core\java\com\google\android\mms\util\PduCache.java,该类未包含在默认的
android.jar文件中,需要重新编译;
2、android.provider.Telephony.Mms: 位置- myeclair\frameworks\base\core\java\android\provider\Telephony.java,该类被标记为 @hide 。
3、com.android.internal.telephony.TelephonyIntents:位置
-myeclair\frameworks\base\telephony\java\com\android\internal\telephony
\TelephonyIntents.java,该类是一个常量类是未被开放的API。
4、com.android.internal.telephony.Phone: 位置-
myeclair\frameworks\base\telephony\java\com\android\internal\telephony
\Phone.java, 该类被标记为 @hide
4、.transaction.PushReceiver : WAP_PUSH 事件的广播接收器,该事件发生时
代表手机收到了一条新的WAP PUSH
message。该接收器被调用后,首先唤醒手机屏幕5秒钟,然后在一个后台线程中处理push-data,将消息数据插入到数据库中,必要时启动
TransactionService服务以更新通知信息 。触发该接收器运行的 Intent是:
(intent.action=android.provider.Telephony.WAP_PUSH_RECEIVED,
data=application/vnd.wap.mms-message),其中Action.Name定义在
android.provider.Telephony类中。值得注意的是该Receiver有申明权
限:android.permission.BROADCAST_WAP_PUSH,这意味着发出该广播时必须携带该授权,否则本
Receiver将不会被触发执行。
PushReceiver.java中有编译错误,因为它无法访问以下类:
1、android.provider.Telephony : 位置- myeclair\frameworks\base\core\java\android\provider\Telephony.java,该类被标记为 @hide 。
2、com.google.android.mms.*: 位置- myeclair\frameworks\base\core\java\com\google\android\mms\*,这些类未包括在公开的API中
6、.transaction.SimFullReceiver
:Sim卡短信存储空间满的事件通知,当系统发现Sim卡中存储短信的空间耗尽时会发出该广播事件。该接收器完成的工作是在通知区域显示相关信息,点击通
知信息后,可以进入管理Sim卡中短消息的Activity界面 。
SimFullReceiver.java中有编译错误,因为它无法访问 android.provider.Telephony
类,所在位置-
myeclair\frameworks\base\core\java\android\provider\Telephony.java,该类被标记
为 @hide
7、.transaction.SmsRejectedReceiver
:短消息被拒绝时的事件接收器,当手机的存储空间不足时会拒绝接收新的短消息,当该事件发生时SmsRejectedReceiver被调用,它会检查确
认是否是存储空间不足,然后在通知区域显示相关通知信息。
SmsRejectedReceiver.java中有编译错误,因为它无法访问 android.provider.Telephony
类,所在位置-
myeclair\frameworks\base\core\java\android\provider\Telephony.java,该类被标记
为 @hide 。
Messaging中的Activity
Activity是用来构建UI(用户界面 )的组件,用户操作界面代表了应用程序提供的基本功能,是应用程序和用户之间的交互接口。在Messaging应用中有以下的Activity:
1、.ui.ConversationList
,对话列表界面,这是进入应用程序的主界面。它有两个配置属性值得我们特别注
意,a.android:configChanges="orientation|keyboardHidden":在Android系统中,当程序所运
行的环境(如:屏幕方向、键盘状态、字体等级,等等 )发生变化后 会导致Activity被重新启动(以适应环境变化 ),然而
Activity也可以宣称自己来应付某些变化(而不是一股脑地全让系统重启自己 ), configChanges 属性 正是用于 指定自己愿意
应付 的变化情况。此处该属性有两个值, orientation代表屏幕方向发生改变,
keyboardHidden表示键盘可访问状态发生变化(即键盘弹出/收起 ),这意味着当屏幕方向和键盘可用状态 发生变化时,
Activity不会被重新启动,而是调用其onConfigurationChanged方法,通常是在该方法中对自己做出调整,以适应变
化;b.launchMode="singleTop":该属性指示了Activity的加载模式,这与Activity在不同Task之间的重用有关,
该属性共有4个可用选项standard,
singleTop,singleTask,singleInstance,它们将与Intent中的FLAG_ACTIVITY_* 标记 常量
协同产生相关作用。
ConversationList类中定义了程序中涉及到的选项菜单、会话(Conversation)项上的上下文菜单等UI元素。另外该类中的runOneTimeStorageLimitCheckForLegacyMessages方法用于检测存储空间限制。
SmsRejectedReceiver .java中有编译错误,因为它无法访问以下类:
1.android.provider.Telephony 类,所在位置- myeclair\frameworks\base\core\java\android\provider\Telephony.java,该类被标记为 @hide 。
2. com.google.android.mms.*: 位置- myeclair\frameworks\base\core\java\com\google\android\mms\*,这些类未包括在公开的API中。
2、.ui.ComposeMessageActivity ,创建新消息的用户界面,通过选项菜单menu_compose_new会调用到该界面。这是个很庞大的类,内部实现也很复杂,等仔细看了再写补充吧。
ComposeMessageActivity .java中有编译错误,因为它无法访问以下类:
1.com.android.internal.widget.ContactHeaderWidget类,所在位置-
myeclair\frameworks\base\core\java\com\android\internal\widget
\ContactHeaderWidget.java,该类被标记为 @hide 。
2.com.android.internal.telephony.* 类,所在位置- myeclair\frameworks\
base\telephony\java\com\android\internal\telephony\*,这些类未包括在公开的API中 。
3. com.google.android.mms.*: 位置- myeclair\frameworks\base\core\java\com\google\android\mms\*,这些类未包括在公开的API中 。
3、 .ui.ForwardMessageActivity ,用于转发消息的Activity,这是ComposeMessageActivity的别名,用于把一条现有消息的内容带到创建消息的界面上;
4、.ui.DeliveryReportActivity ,投递报告 Activity, 用于报告消息的投递状态,它采用对话框风格的主题(android:theme="@android:style/Theme.Dialog")。
DeliveryReportActivity .java中有编译错误,因为它无法访问以下类:
1. com.google.android.mms.*: 位置- myeclair\frameworks\base\core\java\com\google\android\mms\*,这些类未包括在公开的API中 。
2. android.provider.Telephony 类,所在位置- myeclair\frameworks\base\core\java\android\provider\Telephony.java,该类被标记为 @hide
5、.ui.WarnOfStorageLimitsActivity ,存储空间限制警告,用于告知用户 关于存储空间限制的设置信息。
WarnOfStorageLimitsActivity .java中有编译错误,因为它无法访问以下类:
1. com.android.internal.app.AlertActivity类, 位置-
myeclair\frameworks\base\core\java\com\android\internal\app
\AlertActivity.java,该类未包括在公开的API中。
2. com.android.internal.app.AlertController类, 位置-
myeclair\frameworks\base\core\java\com\android\internal\app
\AlertController.java,该类未包括在公开的API中。
6.ui.ConfirmRateLimitActivity ,发送多条彩信时向用户提示确认的界面,它包括了自动 应答操作——即用户 超过一段时间 未作响应时自动取消发送。
7、.ui.ClassZeroActivity ,ClassZero是一种特殊的短消息类型,它会直接显示在用户屏幕上并等待用户操作。ClassZeroActivity正是用来显示此类型的短信消息 ,并运行用户将信息保存起来 。
ClassZeroActivity .java中有编译错误,因为它无法访问以下类:
1. android.provider.Telephony 类,所在位置- myeclair\frameworks\base\core\java\android\provider\Telephony.java,该类被标记为 @hide 。
2. com.google.android.mms.util.SqliteWrapper: 位置-
myeclair\frameworks\base\core\java\com\google\android\mms\
util\SqliteWrapper.java ,该类未包括在公开的API中。
8、.ui.MessagingPreferenceActivity
,这是Messaging应用的系统配置界面,其中有针对SMS、MMS、存储限制等配置属性,以及管理存储在 SIM卡中
的短信消息。该Activity启动时会检查当前是否有SIM,以及是否支持MMS来动态调整配置项列表。
MessagingPreferenceActivity
.java中有编译错误,因为它无法访问TelephonyManager.getDefault()方法,可以考虑使用
Context.getSystemService(Context.TELEPHONY_SERVICE)方法来得到类实例。
9、.ui.ManageSimMessages ,用于管理Sim卡中短消息的界面,它以列表的形式显示了存储在SIM卡中的短消息,并允许用户将信息转存到手机内存中,或者删除消息。
ManageSimMessages .java中有编译错误,因为它无法访问以下类:
1. android.provider.Telephony 类,所在位置- myeclair\frameworks\base\core\java\android\provider\Telephony.java,该类被标记为 @hide 。
2. com.google.android.mms.util.SqliteWrapper: 位置-
myeclair\frameworks\base\core\java\com\google\android\mms\
util\SqliteWrapper.java ,该类未包括在公开的API中。
10、.ui.SearchActivity ,用于信息搜索的操作界面。Android通过系统服务Context.
SEARCH_SERVICE(即SearchManager类)提供了强大的信息搜索功能。在该应用中通过对联系人(或者电话号码)、主题等信息的匹配
来搜索信息,并将结果显示在一个列表中。
SearchActivity .java中有编译错误,因为它无法访问以下类:
1. android.provider.Telephony 类,所在位置- myeclair\frameworks\base\core\java\android\provider\Telephony.java,该类被标记为 @hide
11、.ui.SlideshowEditActivity , 所谓Slide是指MM中的一页内容 即一帧,通常被称为幻灯片。
SlideshowEditActivity是彩信中所有内容(即多个Slide)的列表,用户可以选定列表项进入Slide播放/修改界面。
SlideshowEditActivity .java中有编译错误,因为它无法访问以下类:
1. com.google.android.mms.*: 位置- myeclair\frameworks\base\core\java\com\google\android\mms\*,这些类未包括在公开的API中
12、.ui.SlideshowActivity , 用于播放Slide幻灯片的界面,它会在全屏状态下显示幻灯片的内容。
SlideshowActivity .java中有编译错误,因为它无法访问以下类:
1. com.google.android.mms.*: 位置- myeclair\frameworks\base\core\java\com\google\android\mms\*,这些类未包括在公开的API中
13、.ui.SlideEditorActivity ,用于编辑Slide幻灯片内容的操作界面,它提供了:添加、移除 文本/图片/音乐,以及Slide等功能。
SlideEditorActivity .java中有编译错误,因为它无法访问以下类:
1. com.google.android.mms.*: 位置- myeclair\frameworks\base\core\java\com\google\android\mms\*,这些类未包括在公开的API中
14、.ui.EditSlideDurationActivity ,用于修改Slide幻灯片持续显示时间 的操作界面 ,默认持续显示时间是5秒。
EditSlideDurationActivity .java编译无错误。
Messaging中的Service
应用中共有两个service:.transaction.TransactionService 和
.transaction.SmsReceiverService,前者负责处理与彩信(MMS)相关的网络业务,后者是短消息(SMS)的接收器,两者
都会响应来自通讯网络的通知并收取信息。它们只用于本应用内部(因为其未声明任何intent-filter),上文介绍的广播接收器中有显式启动它们的
代码。以下我们将分别分析两个Service的基本实现。
1、.transaction.SmsReceiverService ,它被创建时首先
初始化了新的工作线程(HandlerThread对象)用来在后台完成相关动作,紧接着在onStartCommand方法里会将具体的任务通过消息
(即调用service的Intent)发送给工作线程进行处理。根据Intent.Action的名称,工作线程会处理4种情况:
A.系统启动完成后BOOT_COMPLETED:把发件箱(outbox)中的消息移动到发送队列(QueuedBox),然后开始发送队列中的消息,最后调用updateNewMessageIndicator方法更新状态栏消息指示图标;
B.处理Sms接收handleSmsReceived:从Intent中取得消息对象,直接显示给用户(Class0类型)或者保持到数据库中。
C.处理Sms发送handleSmsSent:从待发送消息队列中取得消息,并按次序逐个发送;
D.处理通讯网络状态改变handleServiceStateChanged:用户从无信号状态进入有信息号状态后,继续执行发送任务的情况
2、.transaction.TransactionService , 是处理与彩信相关业务的服务组件,根据代码中的注释可以了解到:
收发彩信时可以是移动数据网络(mobile data
network)或Wi-Fi网络。当没有可用的移动数据网络连接时,会尝试通过Wi-Fi网络发送/接收MMS信息(如果有 Wi-Fi 网络的话)。
它 同样在onCreate方法里首先创建了后台工作线程,通过NetworkConnectivityListener类( 一个被@hide的类 )监听通讯网络链接状态的变化,并根据不同的链接状态作出相应的反应。
紧接着就是onStartCommand方法了,它首先会检测当前的网络连接状态,然后分别完成以下几件事情:
A. 针对收发彩信的业务,它将intent.getExtras()包装成一个DTO—— TransactionBundle,再通过launchTransaction()方法将具体工作交给后台工作线程去处理。
B. 如果 intent.getExtras()为Null时,它会尝试从数据库中扫描是否有(上次系统结束时)未完成的操作,如果有则遍历所有操作项,逐个调用 launchTransaction()方法,以完成操作;
重点还是在后台工作线程的处理逻辑上,在代码中表现为handleMessage方法,它共处理以下几种不同类型的业务消息:
Ⅰ.EVENT_CONTINUE_MMS_CONNECTIVITY
,与彩信系统建立网络连接,它首先会检查当前是否有待处理的业务,然后通过调用beginMmsConnectivity方法来创建于彩信系统的网络连
接,如果网络连接被正确建立,那么它会通过一个30秒间隔的计时器来维持连接的持续存在;
Ⅱ.EVENT_DATA_STATE_CHANGED
,网络连接状态发生改变分支,这一分支是通过对NetworkConnectivityListener对象的监听而获得回调。在该分支中首先确认了网络
连接的有效性,(代码在此处仅允许ConnectivityManager.TYPE_MOBILE_MMS类型那么wi-fi连接属于该类型?
),然后创建 TransactionSettings对象,并调用processPendingTransaction方法处理具体的彩信业务;
Ⅲ.EVENT_TRANSACTION_REQUEST
,这是对具体彩信业务的处理分支,它首先创建了承载业务参数的TransactionSettings对象,该对象包含有彩信中心服务地址
(mmscUrl)、代理服务器地址和端口等用于建立网络连接的参数,然后根据不同的业务类型,分别进行处理。当前仅明确处理了以下4种业务:
1、NOTIFICATION_TRANSACTION,通过一条Push数据,通知手机端收到有新信息;
2、RETRIEVE_TRANSACTION,收取彩信;
3、SEND_TRANSACTION,发送彩信;
4、READREC_TRANSACTION,彩信阅读报告;
用于处理具体业务的关键代码在processTransaction方法中,它首先检查业务是否已存在于处理队列中(mProcessing
&
mPending),然后调用beginMmsConnectivity()方法确认网络连接有效性,并点亮终端屏幕,,然后将业务对象条件到处理队列中
并向业务附加观察者,最后调用业务自身process()方法完成网络通信。。注意:业务的process方法被调用又会触发观察者(即当前
service) 的update方法被调用,这使得刚才被处理掉的业务从队列中被移除,并且开始处理下一条业务;
Ⅴ.EVENT_HANDLE_NEXT_PENDING_TRANSACTION ,这是一个多条彩信业务能够 被 连续
处理的关键分支,首先在当前service中有mProcessing数组列表用于缓存连续的彩信业务,每条彩信业务是一个可被观察的对象(注:观察者模
式 ), 当前service是唯一观察者,其会感知到一条业务已处理结束,并触发下一条业务处理的开始;
所有彩信业务处理完成后, 会调用 service中的endMmsConnectivity()方法,结束与彩信中心的网络连接,并撤销屏幕点亮。
发表评论
-
Android JNI 编程常见小问题
2015-09-08 11:31 1227extern "C" { jint Jav ... -
Android ServiceManager注册自定义service
2015-08-19 09:53 4173当我们要使用android的系统服务时,一般都是使用Conte ... -
Android ALMP 架设web服务器配置
2014-10-08 18:48 1497随着信息时代的发展,智能手机已经越来越普及。下面本文将带大家把 ... -
Android UiAutomator 自动化测试
2014-07-04 17:39 10028一、一个BUG引发的问题 ... -
Android XP MTP支持
2014-03-18 16:41 2332家里电脑是win7,连上直接豌豆荚装驱动就好了。但单位的XP却 ... -
Android Launcher2 icon大小修改
2012-08-16 19:12 6065不同分辨率、不同屏幕的不同设备,android 原生的Laun ... -
android 浏览器APN切换
2012-04-16 16:42 2352业务需求:有些链接需 ... -
android 浏览器全屏显示
2012-04-16 16:40 4918业务需求:浏览器设置中支持全屏显示的功能。 分析:只需要在 ... -
Android MD5校验码的生成与算法实现
2012-03-05 15:05 20385在Java中,java.security.MessageDi ... -
Android View的xml属性
2012-02-27 13:25 2835java.lang.Object andro ... -
Android Gallery3D源码学习总结(三)——Cache缓存及数据处理流程
2011-12-29 11:04 4701第一,在应用程序中有三个线程存在:主线程(随activity的 ... -
Android Gallery3d源码学习总结(二)——绘制流程drawThumbnails
2011-12-29 11:02 2943此函数控制相册表格页 ... -
Android Gallery 3D 特效精华
2011-12-29 10:45 5337Android Gallery 3D 特效精华 一、布 ... -
Android Gallery3d源码学习总结(一)——绘制流程drawFocusItems
2011-12-29 10:42 2746显示单张图片相关的输入变量 int selecte ... -
Android:AppWidget,PendingIntent,RemoteViews用法
2011-11-25 10:09 5929什么是AppWidget?AppWidget就是我们平常在 ... -
Android软件汉化/精简/去广告教程
2011-08-23 12:32 2939前言: 现在随处都可以找到功能强大的汉化工具,操作简 ... -
Android ListView页眉页脚效果
2011-07-06 14:07 2684大家都知道,在我们调用ListView的addFooterVi ... -
Android 获取设备信息
2011-06-22 21:09 7971)android 获取设备型号、OS版本号: imp ... -
Android 应用安装设置
2011-05-31 16:18 1913应用程序的默认安装位置以及是否可移动取决于该程序的开发者的配置 ... -
Android Activity去除标题栏和状态栏
2011-05-31 13:10 40489一、在代码中设置 public void onCreate( ...
相关推荐
通过对Android2.1源码结构的分析,我们可以看到,该版本已经具备了现代Android系统的基本框架,涵盖了从底层系统服务到上层应用的完整生态链。虽然随着时间的推移,许多组件已经被更先进的技术所取代,但其设计思路...
3.2 Android应用程序结构解析 10 3.2.1 活动 10 3.2.2 意图接收器 11 3.2.3 服务 11 3.2.4 内容提供者 11 3.3 Intent的详细解析 12 3.3.1 Intent的抽象描述 12 3.3.2 Android如何解析Intent 13 3.4 Android活动的...
该研究通过对Android平台的深入分析,结合具体应用场景,成功设计并实现了基于Android平台的手机短信管理系统。该系统不仅具备基本的短信管理功能,还提供了高级的搜索和远程备份功能,极大地提升了用户的使用体验。...
3.2 Android应用程序结构解析 10 3.2.1 活动 10 3.2.2 意图接收器 11 3.2.3 服务 11 3.2.4 内容提供者 11 3.3 Intent的详细解析 12 3.3.1 Intent的抽象描述 12 3.3.2 Android如何解析Intent 13 3.4 Android活动的...
`SmsMessage`类是Android SDK中用于解析接收到的短信的重要类。该类提供了许多方法来获取短信的相关信息,例如: - `public static SmsMessage[] createFromPdu(byte[] pdu)`: 从原始的PDU数据创建一个`SmsMessage`...
1 绪论 本文主要探讨的是在Android平台上设计和实现一款短信发送软件的过程与方法。随着智能手机的普及,Android系统因其开源性和强大的兼容...关键词:Android平台,短信发送,应用程序开发,Eclipse ADT,SmsManager
Android架构解析是对Android系统核心设计和工作原理的深入探讨,主要关注的是Android 2.1版本。这个压缩包包含了一系列由sK_坤在CSDN博客上发表的文章,涵盖了Android架构的不同方面,如键盘、触摸屏、电池管理、...
【Android短信跨平台管理软件】 ...以上是对"android短信跨平台管理软件文档"的详细解析,涵盖了该软件的背景、设计、实现和未来发展方向,强调了其在解决平台间信息交互难题和扩展手机存储空间上的作用。
2.1 Android开发环境要求 2.2 JDK的安装和配置 2.2.1 安装JDK 2.2.2 配置JDK 2.3 Android SDK的下载和安装 2.3.1 下载Android SDK 2.3.2 安装Android SDK 2.3.3 创建Android虚拟设备 2.4 Eclipse的下载和安装 2.4.1 ...
短信应用通过调用系统提供的接口与SMS服务进行交互。短信防火墙需要深入理解这些接口,以便在适当的时候介入处理。 1.2 BroadcastReceiver:Android中的BroadcastReceiver是一种广播接收器,可以监听系统或自定义的...
### 基于短信的手机控制程序:深入解析与应用 #### 1. 程序概述 在当今数字化时代,智能手机已经成为我们生活中不可或缺的一部分,而Android系统以其开放性和灵活性吸引了大量的开发者和用户。在这样的背景下,...
Android 包含了完整的操作系统、中间件和关键应用程序,提供了电话、短信、电子邮件、浏览器、地图导航、社交媒体等多种功能。同时,开发者可以利用 Android SDK 开发出各种各样的应用程序,满足用户多样化的需求。 ...
### 基于Android平台的天气预报短信服务系统知识点解析 #### 一、项目概述 本项目是一款基于Android平台的天气预报短信服务系统,旨在通过移动设备为用户提供天气预报信息。该系统不仅能够显示实时天气状况,还...
### 基于Android平台的天气预报短信服务系统知识点解析 #### 一、需求分析 **1.1 功能需求** - **用户界面**: 应用需具备展示天气信息的功能,包括当前及未来几天的天气状况(如温度、湿度、风向、雨雪情况等)。...
《基于Android平台的天气预报短信服务系统课程设计》 在当今信息化社会,获取实时的天气预报信息变得至关重要,尤其对于出行、生活安排等都有极大帮助。本课程设计旨在利用Android平台构建一个天气预报短信服务系统...
在Android SDK 2.1环境下,开发者可以利用Java语言进行编程,创建用户界面,并与设备的各种硬件和软件资源交互。 开发RSS阅读器的过程中,首先要做的是研究背景和现状。RSS是一种内容聚合格式,允许用户订阅感兴趣...
在2.2版本中,Android系统支持了应用程序安装在SD卡上,提高了运行速度和存储空间管理。另外,可能增加了对更高级别OpenGL ES版本的支持,提升了图形处理能力。此外,网络功能如WiFi热点和FTP服务器支持可能在这一...
2.1 安装AndroidSDK与ADTplug-in 2.2 建立第一个Android项目(HelloAndroid!) 2.3 Android应用程序架构——从此开始 2.4 可视化的界面开发工具 2.5 部署应用程序到Android手机 第3章 用户人机界面 3.1 更改与显示...