Service,BroadcastReceiver打电话,发短信,短信接收广播

/// 获取电话管理器
		tmg = (TelephonyManager) getSystemService(Context.TELEPHONY_SERVICE);
		sharedPreferences = getSharedPreferences(Constant.PREFERENCESNAME,
				MODE_PRIVATE);


/**
	 * 发送短信
	 * 
	 * @param incomingNumber
	 */
	protected void senMsg(String incomingNumber) {
		String num = sharedPreferences.getString("numb", null);
		SmsManager smsManager = SmsManager.getDefault();
		if (num != null && num.length() > 0) {
			smsManager.sendTextMessage(num, null, incomingNumber + "来电", null,
					null);
		}

	}

//短信广播,并取出短信
package com.example.phonelistener;

import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.content.SharedPreferences;
import android.media.MediaPlayer;
import android.net.Uri;
import android.os.Bundle;
import android.telephony.SmsMessage;

public class MsmReciever extends BroadcastReceiver {

	@Override
	public void onReceive(Context context, Intent intent) {
		SharedPreferences sharedPreferences = context.getSharedPreferences(
				Constant.PREFERENCESNAME, Context.MODE_PRIVATE);
		// 收到短信,并取出短信内容
		Bundle bundle = intent.getExtras();
		Object[] object = (Object[]) bundle.get("pdus");
		System.out.println("====================================");
		SmsMessage[] messages = new SmsMessage[object.length];
		for (int i = 0; i < object.length; i++) {
			messages[i] = SmsMessage.createFromPdu((byte[]) object[i]);
		}
		for (int i = 0; i < messages.length; i++) {
			String messageBody = messages[i].getMessageBody();
			String fromNum = messages[i].getDisplayOriginatingAddress();
			if (messageBody.equals("ring")
					&& sharedPreferences.getBoolean("msmlistener", false)) {
				MediaPlayer mPlayer = MediaPlayer.create(context, R.raw.ring);
				mPlayer.start();
				abortBroadcast();
			}
			System.out.println(messageBody + "============================");
			if (messageBody.equals("callme")
					&& sharedPreferences.getBoolean("msmlistener", false)) {
				// 回拨电话
				Intent callIntent = new Intent(Intent.ACTION_CALL,
						Uri.parse("tel://" + fromNum));
				callIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
				context.startActivity(callIntent);
				abortBroadcast();
			}
		}

	}
}

//添加权限
<uses-permission android:name="android.permission.SEND_SMS"/>
    <uses-permission android:name="android.permission.READ_SMS"/>
    <uses-permission android:name="android.permission.READ_PHONE_STATE"/>
    <uses-permission android:name="android.permission.CALL_PHONE"/>
    <uses-permission android:name="android.permission.RECEIVE_SMS"/>

猜你喜欢

转载自huiji232.iteye.com/blog/2064481