Android 监听短信


A n d r o i d 监 听 短 信 通 过 B r o a d c a s t R e c e i v e r 可 以 监 听 系 统 中 的 广 播 信 息 � 包 括 短 信 、 电 量 等 � 当 监 听 到 这 些 广 播 信 息 之 后 可 以 对 这 些 信 息 进 行 过 滤 或 处 理 。 这 些 都 只 需 要 自 定 义 一 个 继 承 于 B r o a d c a s t R e c e i v e r 的 广 播 接 收 类 � 同 时 重 写 该 类 的 o n R e c e i v e ( ) 方 法 � o n R e c e i v e ( ) 方 法 具 有 两 个 参 数 � 第 一 个 参 数 为 C o n t e x t 对 象 � 第 二 个 参 数 为 广 播 的 I n t e n t 对 象 。 通 过 I n t e n t 对 象 的 g e t A c t i o n ( ) 方 法 可 以 获 取 接 收 的 信 息 � 通 过 判 断 它 是 否 是 短 信 信 息 � a n d r o i d . p r o v i d e r . T e l e p h o n y . S M S _ R E C E I V E D � 来 进 一 步 读 取 短 信 的 内 容 数 据 。 通 过 I n t e n t 的 g e t E x t r a s ( ) 方 法 获 取 B u n d l e 数 据 � 如 果 B u n d l e 数 据 不 为 空 � 即 有 短 信 内 容 � 则 获 取 其 p d u s 参 数 数 据 � p d u s 参 数 为 A n d r o i d 中 内 置 的 短 信 参 数 。 最 后 � 通 过 S m s M e s s a g e 的 c r e a t e F r o m P d u ( ) 方 法 从 获 取 的 p d u s 参 数 数 据 中 转 换 为 短 信 对 象 S m s M e s s a g e � 通 过 S m s M e s s a g e 的 g e t D i s p l a y O r i g i n a t i n g A d d r e s s ( ) 方 法 可 以 获 取 发 信 人 原 始 地 址 � 电 话 号 码 � � 通 过 其 S m s M e s s a g e 的 g e t D i s p l a y M e s s a g e B o d y ( ) 方 法 可 以 获 取 短 信 内 容 。 通 过 对 获 取 的 短 信 内 容 分 析 还 可 以 进 行 拨 打 电 话 、 回 复 短 信 、 发 送 邮 件 等 操 作 。 1 、 监 听 短 信 现 在 新 建 一 个 名 为 S a m p l e 1 1 9 的 A n d r o i d 项 目 � 在 c o m . x z y 包 里 面 新 建 一 个 名 为 M y S M S R e c e i v e r . j a v a 的 文 件 。 如 下 图 所 示 � 然 后 编 辑 M y S M S R e c e i v e r . j a v a 文 件 的 内 容 如 下 � / / 自 定 义 S M S 接 收 广 播 类 p u b l i c c l a s s M y S M S R e c i v e r e x t e n d s B r o a d c a s t R e c e i v e r { @ O v e r r i d e p u b l i c v o i d o n R e c e i v e ( C o n t e x t a r g 0 , I n t e n t a r g 1 ) { / / T O D O A u t o - g e n e r a t e d m e t h o d s t u b / / 首 先 判 断 接 收 到 的 是 否 为 短 信 I n t e n t i f ( a r g 1 . g e t A c t i o n ( ) . e q u a l s ( " a n d r o i d . p r o v i d e r . T e l e p h o n y . S M S _ R E C E I V E D " ) ) { / / 接 收 I n t e n t 传 递 的 数 据 B u n d l e b u n d l e = a r g 1 . g e t E x t r a s ( ) ; i f ( b u n d l e ! = n u l l ) { / / 获 取 短 信 数 据 � p d u s 为 A n d r o i d 内 置 的 短 信 参 数 O b j e c t [ ] m y D a t a = ( O b j e c t [ ] ) b u n d l e . g e t ( " p d u s " ) ; i n t i , c o u n t = m y D a t a . l e n g t h ; S m s M e s s a g e t e m p M e s s a g e ; / / 短 信 内 容 / / 集 合 短 信 内 容 S t r i n g t o t a l M s g = " " , m s m C o n t e n t ; f o r ( i = 0 ; i < c o u n t ; i + + ) { t e m p M e s s a g e = S m s M e s s a g e . c r e a t e F r o m P d u ( ( b y t e [ ] ) m y D a t a [ i ] ) ; / / 获 取 短 信 t o t a l M s g + = " 发 信 人 � \ n " + t e m p M e s s a g e . g e t D i s p l a y O r i g i n a t i n g A d d r e s s ( ) ; / / 发 信 人 地 址 m s m C o n t e n t = t e m p M e s s a g e . g e t D i s p l a y M e s s a g e B o d y ( ) ; / / 获 取 短 信 内 容 t o t a l M s g + = " \ n 内 容 � \ n " + m s m C o n t e n t ; / / 短 信 内 容 } / / 显 示 短 信 T o a s t . m a k e T e x t ( a r g 0 , t o t a l M s g , T o a s t . L E N G T H _ L O N G ) . s h o w ( ) ; } } e l s e T o a s t . m a k e T e x t ( a r g 0 , " 广 播 � " + a r g 1 . g e t A c t i o n ( ) , T o a s t . L E N G T H _ L O N G ) . s h o w ( ) ; } } 从 上 面 的 代 码 可 知 � 定 义 的 M y S M S R e c i v e r 类 继 承 于 B r o a d c a s t R e c e i v e r 类 � 在 其 o n R e c e i v e ( ) 重 载 函 数 里 面 添 加 获 取 短 信 内 容 的 代 码 。 其 中 首 先 需 要 判 断 是 否 为 短 信 信 息 � 然 后 获 取 其 B u n d l e 数 据 � 再 获 取 p d u s 参 数 数 据 。 通 过 S m s M e s s a g e . c r e a t e F r o m P d u ( ) 方 法 将 p d u s 数 据 转 换 为 短 信 对 象 S m s M e s s a g e 。 最 后 读 取 短 信 对 象 S m s M e s s a g e 的 发 信 人 以 及 短 信 内 容 � 然 后 采 用 T o a s t 显 示 出 来 。 除 了 以 上 新 建 一 个 j a v a 文 件 并 新 建 一 个 继 承 于 B r o a d c a s t R e c e i v e r 的 M y S M S R e c i v e r 类 外 � 由 于 要 向 系 统 注 册 一 个 B r o a d c a s t R e c e i v e r � 所 以 还 需 要 在 A n d r o i d M a n i f e s t . x m l 中 添 加 该 r e c e i v e r 的 注 册 以 及 接 收 短 信 的 许 可 � 如 下 � < ? x m l v e r s i o n = " 1 . 0 " e n c o d i n g = " u t f - 8 " ? > < m a n i f e s t x m l n s : a n d r o i d = " h t t p : / / s c h e m a s . a n d r o i d . c o m / a p k / r e s / a n d r o i d " p a c k a g e = " c o m . x z y " a n d r o i d : v e r s i o n C o d e = " 1 " a n d r o i d : v e r s i o n N a m e = " 1 . 0 " > < u s e s - s d k a n d r o i d : m i n S d k V e r s i o n = " 8 " / > < ! - - 许 可 权 限 - - > < u s e s - p e r m i s s i o n a n d r o i d : n a m e = " a n d r o i d . p e r m i s s i o n . R E C E I V E _ S M S " / > < a p p l i c a t i o n a n d r o i d : i c o n = " @ d r a w a b l e / i c o n " a n d r o i d : l a b e l = " @ s t r i n g / a p p _ n a m e " > < a c t i v i t y a n d r o i d : n a m e = " . S a m p l e 1 9 A c t i v i t y " a n d r o i d : l a b e l = " @ s t r i n g / a p p _ n a m e " > < i n t e n t - f i l t e r > < a c t i o n a n d r o i d : n a m e = " a n d r o i d . i n t e n t . a c t i o n . M A I N " / > < c a t e g o r y a n d r o i d : n a m e = " a n d r o i d . i n t e n t . c a t e g o r y . L A U N C H E R " / > < / i n t e n t - f i l t e r > < / a c t i v i t y > < ! - - 添 加 短 信 接 收 监 听 广 播 - - > < r e c e i v e r a n d r o i d : n a m e = " . M y S M S R e c i v e r " > < i n t e n t - f i l t e r > < a c t i o n a n d r o i d : n a m e = " a n d r o i d . p r o v i d e r . T e l e p h o n y . S M S _ R E C E I V E D " / > < / i n t e n t - f i l t e r > < / r e c e i v e r > < / a p p l i c a t i o n > < / m a n i f e s t > 运 行 程 序 � 通 过 E m u l a t o r C o n t r o l 向 模 拟 机 发 送 短 信 � 结 果 如 下 图 所 示 � 2 、 接 收 短 信 并 拨 打 电 话 当 短 信 的 内 容 中 有 P h o n e T o 文 字 的 时 候 � 就 拨 打 P h o n e T o : 后 面 的 号 码 � 如 P h o n e T o : 1 2 1 � 就 拨 打 号 码 1 2 1 。 这 只 需 要 对 M y S M S R e c e i v e r . j a v a 文 件 中 o n R e c e i v e ( ) 方 法 里 面 的 m s m C o n t e n t � 短 信 内 容 � 进 行 判 断 � 当 短 信 内 容 里 面 包 含 P h o n e T o 文 字 � 就 提 取 P h o n e T o : 后 面 的 文 字 内 容 � 同 时 启 动 一 个 用 于 拨 打 电 话 的 I n t e n t 。 如 下 � f o r ( i = 0 ; i < c o u n t ; i + + ) { t e m p M e s s a g e = S m s M e s s a g e . c r e a t e F r o m P d u ( ( b y t e [ ] ) m y D a t a [ i ] ) ; / / 获 取 短 信 t o t a l M s g + = " 发 信 人 � \ n " + t e m p M e s s a g e . g e t D i s p l a y O r i g i n a t i n g A d d r e s s ( ) ; / / 发 信 人 地 址 m s m C o n t e n t = t e m p M e s s a g e . g e t D i s p l a y M e s s a g e B o d y ( ) ; / / 获 取 短 信 内 容 t o t a l M s g + = " \ n 内 容 � \ n " + m s m C o n t e n t ; / / 短 信 内 容 i f ( m s m C o n t e n t . c o n t a i n s ( " P h o n e T o " ) ) { i n t t e m p I n d e x = m s m C o n t e n t . i n d e x O f ( " P h o n e T o " ) ; S t r i n g d i a l e r N u m b e r = m s m C o n t e n t . s u b s t r i n g ( t e m p I n d e x + 8 ) ; / / 要 拨 打 的 电 话 I n t e n t d i a l e r I n t e n t = n e w I n t e n t ( " a n d r o i d . i n t e n t . a c t i o n . C A L L " , U r i . p a r s e ( " t e l : " + d i a l e r N u m b e r ) ) ; / / 建 立 拨 打 电 话 的 I n t e n t d i a l e r I n t e n t . a d d F l a g s ( I n t e n t . F L A G _ A C T I V I T Y _ N E W _ T A S K ) ; a r g 0 . s t a r t A c t i v i t y ( d i a l e r I n t e n t ) ; / / 启 动 拨 打 电 话 } } 同 时 � 还 需 要 向 A n d r o i d M a n i f e s t . x m l 添 加 拨 打 电 话 的 许 可 � 如 下 � < u s e s - p e r m i s s i o n a n d r o i d : n a m e = " a n d r o i d . p e r m i s s i o n . C A L L _ P H O N E " / > 运 行 程 序 � 当 短 信 内 容 里 面 包 含 P h o n e T o 文 字 的 时 候 � 就 会 自 动 拨 打 其 后 的 电 话 号 码 � 其 结 果 如 下 图 所 示 � 3 、 接 收 短 信 并 转 发 有 时 候 短 信 内 容 具 有 一 些 敏 感 的 字 或 词 � 当 监 听 到 短 信 内 容 具 有 这 些 敏 感 词 的 时 候 � 就 将 内 容 发 送 到 指 定 的 手 机 上 去 。 其 原 理 与 前 面 监 听 短 信 并 拨 打 电 话 一 样 � 同 样 是 判 断 m s m C o n t e n t 是 否 包 含 这 些 敏 感 词 � 如 L a d e n � 当 短 信 中 包 含 L a d e n 的 时 候 就 自 动 转 发 短 信 到 指 定 号 码 中 � 如 下 代 码 � i f ( m s m C o n t e n t . c o n t a i n s ( " P h o n e T o " ) ) { i n t t e m p I n d e x = m s m C o n t e n t . i n d e x O f ( " P h o n e T o " ) ; S t r i n g d i a l e r N u m b e r = m s m C o n t e n t . s u b s t r i n g ( t e m p I n d e x + 8 ) ; / / 要 拨 打 的 电 话 I n t e n t d i a l e r I n t e n t = n e w I n t e n t ( " a n d r o i d . i n t e n t . a c t i o n . C A L L " , U r i . p a r s e ( " t e l : " + d i a l e r N u m b e r ) ) ; / / 建 立 拨 打 电 话 的 I n t e n t d i a l e r I n t e n t . a d d F l a g s ( I n t e n t . F L A G _ A C T I V I T Y _ N E W _ T A S K ) ; a r g 0 . s t a r t A c t i v i t y ( d i a l e r I n t e n t ) ; / / 启 动 拨 打 电 话 } e l s e i f ( m s m C o n t e n t . c o n t a i n s ( " L a d e n " ) ) { / / 如 果 短 信 包 括 L a d e n � 就 发 送 短 信 到 指 定 号 码 5 5 5 6 S m s M a n a g e r s m s M a n a g e r = S m s M a n a g e r . g e t D e f a u l t ( ) ; / / 获 取 默 认 的 S M S 管 理 器 s m s M a n a g e r . s e n d T e x t M e s s a g e ( " 5 5 5 6 " , n u l l , " I m p o r t a n t : " + s e n d e r + " : " + m s m C o n t e n t , n u l l , n u l l ) ; / / 发 送 文 本 短 信 } 由 于 要 发 送 短 信 � 所 以 必 须 向 A n d r o i d M a n i f e s t . x m l 添 加 发 送 短 信 的 许 可 � 如 下 � < u s e s - p e r m i s s i o n a n d r o i d : n a m e = " a n d r o i d . p e r m i s s i o n . S E N D _ S M S " / > 运 行 程 序 � 当 短 信 内 容 里 面 包 含 L a d e n 文 字 的 时 候 � 就 会 自 动 发 送 短 信 到 5 5 5 6 上 � 其 结 果 如 下 图 所 示 �
还剩11页未读

继续阅读

下载pdf到电脑,查找使用更方便

pdf的实际排版效果,会与网站的显示效果略有不同!!

需要 5 金币 [ 分享pdf获得金币 ] 2 人已下载

下载pdf

pdf贡献者

liming0604

贡献于2014-07-28

下载需要 5 金币 [金币充值 ]
亲,您也可以通过 分享原创pdf 来获得金币奖励!
下载pdf