android短信拦截的实现代码

 更新时间:2013年09月18日 14:36:01   作者:  
这篇文章介绍了android短信拦截的实现代码,有需要的朋友可以参考一下

短信拦截的实现主要是使用了广播接收者来实现。

BroadcastReceiver  广播接收者   必须指定要接收的广播类型。必须明确的指定action

 
广播:事件。
普通广播: 是异步的。会广播接收者同时接收,不能被中断
sendBroadcast()
有序广播: 是同步的。会根据广播接收的优先级进行接收,是可以中断   短信到来广播
sendOrderBroadcast()
priority的范围是:-1000 ~ 1000
如果有序广播明确的指定了广播接收者,他是无法被中断的。

代码实现如下:

1、MainActivity

复制代码 代码如下:

package com.njupt.t4; 

import android.os.Bundle; 
import android.app.Activity; 
import android.content.IntentFilter; 
import android.view.Menu; 

public class MainActivity extends Activity { 

    private SmsReceiver receiver = new SmsReceiver(); 
    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
        super.onCreate(savedInstanceState); 
        setContentView(R.layout.activity_main); 

        IntentFilter filter = new IntentFilter(); 
        filter.setPriority(997); 
        filter.addAction("android.provider.Telephony.SMS_RECEIVED"); 
        registerReceiver(receiver,filter); 
    } 

    @Override 
    public boolean onCreateOptionsMenu(Menu menu) { 
        // Inflate the menu; this adds items to the action bar if it is present. 
        getMenuInflater().inflate(R.menu.main, menu); 
        return true; 
    } 

    @Override 
    protected void onDestroy() { 
        super.onDestroy(); 

        unregisterReceiver(receiver); 
    } 



2、SmsReceiver
复制代码 代码如下:

package com.njupt.t4; 

import java.text.SimpleDateFormat; 
import android.content.BroadcastReceiver; 
import android.content.Context; 
import android.content.Intent; 
import android.os.Bundle; 
import android.telephony.SmsManager; 
import android.telephony.SmsMessage; 

public class SmsReceiver extends BroadcastReceiver { 

    @Override 
    public void onReceive(Context context, Intent intent) { 

        System.out.println("章泽天是我老婆,老婆我成功了...."); 
        Bundle bundle = intent.getExtras(); 
        Object[] objects = (Object[]) bundle.get("pdus"); 
        for(Object obj : objects){ 
            SmsMessage smsMessage = SmsMessage.createFromPdu((byte[])obj); 
            String body = smsMessage.getDisplayMessageBody(); 
            String address = smsMessage.getDisplayOriginatingAddress(); 
            long date = smsMessage.getTimestampMillis(); 

            SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss"); 
            String dateStr = format.format(date); 

            System.out.println(address +" 于  " + dateStr + "给你发了以下内容: " + body); 

            if(address.equals("5558")){ 
                abortBroadcast(); 
                SmsManager smsManager = SmsManager.getDefault(); 
                smsManager.sendTextMessage("5556",null,address +" 于  " + dateStr + "给你发了以下内容: " + body,null,null); 

            } 
        } 
    } 




 

3、AndroidManifest.xml

需要在清单文件中注册上一下权限。(如果不注册是不会成功地拦截到短信的,在logcat中会以Warn的

级别告诉你你没有相应的权限...)
复制代码 代码如下:

<uses-permission android:name="android.permission.RECEIVE_SMS"/> 
   <uses-permission android:name="android.permission.SEND_SMS"/> 
   <uses-permission android:name="android.permission.PROCESS_OUTGOING_CALLS"/> 


-----------------------------------------------------其实上面就是使用了代码的方式来注册BroadcastReceiver-------------

其实还可以在AndroidManifest.xml注册receiver这个组件(但是我采用这个方式总是会出现内存泄露的错误,所以下面的代码仅供参考)
复制代码 代码如下:

<receiver android:name=".SmsReceiver"> 
            <intent-filter android:priority="1000"> 
                <action android:name="android.provider.Telephony.SMS_RECEIVED"/> 
            </intent-filter> 
        </receiver> 

相关文章

  • Android画画板的制作方法

    Android画画板的制作方法

    这篇文章主要为大家详细介绍了Android画画板的制作方法,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-08-08
  • Android拦截外拨电话程序示例

    Android拦截外拨电话程序示例

    这篇文章主要介绍了Android拦截外拨电话的示例,大家参考使用吧
    2013-11-11
  • Android使用MulticastSocket实现多点广播图片

    Android使用MulticastSocket实现多点广播图片

    这篇文章主要为大家详细介绍了Android使用MulticastSocket实现多点广播图片,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2019-01-01
  • Android之ImageSwitcher的实例详解

    Android之ImageSwitcher的实例详解

    这篇文章主要介绍了Android之ImageSwitcher的实例详解的相关资料,这里提供实例帮助大家理解这个控件的功能,希望能帮助到大家,需要的朋友可以参考下
    2017-08-08
  • Android神兵利器之Image Asset Studio的实现

    Android神兵利器之Image Asset Studio的实现

    这篇文章主要介绍了Android神兵利器之Image Asset Studio的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-06-06
  • Android应用更新之自动检测版本及自动升级

    Android应用更新之自动检测版本及自动升级

    这篇文章主要为大家详细介绍了Android应用更新之自动检测版本及自动升级,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2018-09-09
  • Android SeekBar 自定义thumb旋转动画效果

    Android SeekBar 自定义thumb旋转动画效果

    某些音乐播放或者视频播放的界面上,资源还在加载时,进度条的原点(thumb)会显示一个转圈的效果。这篇文章主要介绍了Android SeekBar 自定义thumb thumb旋转动画效果,需要的朋友可以参考下
    2021-11-11
  • Android仿微信之界面导航篇(1)

    Android仿微信之界面导航篇(1)

    这篇文章主要为大家详细介绍了Android仿微信之界面导航篇,教大家实现滑动界面效果,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2018-04-04
  • Android应用开发中实现apk皮肤文件换肤的思路分析

    Android应用开发中实现apk皮肤文件换肤的思路分析

    这篇文章主要介绍了Android应用开发中实现apk皮肤文件换肤的思路分析,包括布局和主要的皮肤更换逻辑实现,需要的朋友可以参考下
    2016-02-02
  • Android开发之资源文件用法实例总结

    Android开发之资源文件用法实例总结

    这篇文章主要介绍了Android开发之资源文件用法,结合实例形式总结分析了Android开发过程中针对资源文件的常见操作技巧,需要的朋友可以参考下
    2016-02-02

最新评论