您的位置:首页 > 移动开发 > Android开发

安卓 获取电话号码并发送短信

2017-02-12 00:40 106 查看
今天写了个小demo,通过设置一个安全号码,并给其发送短信。按照短信内容操作,能执行短信内容的操作。好了,废话不多说。直接进入正题。

预览效果



给主页面设置一个button xml里面写个button 给其设个id 或onClick;这里就不贴代码了。

由于是点击一个button弹出一个对话框,所以在 activity里,如果你设的是id,你就先需要得到id,然后给其设监听事件。如果你设的是onClick,就给他写个点击事件方法。本人写的是onClick,代码如下:

package com.example.an_phonenumberdemo;

import android.app.PendingIntent;
import android.content.Context;
import android.content.DialogInterface;
import android.content.Intent;
import android.content.SharedPreferences;
import android.support.v7.app.AlertDialog;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.telephony.SmsManager;
import android.view.LayoutInflater;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.RadioButton;
import android.widget.RadioGroup;
import android.widget.TextView;
import android.widget.Toast;

import org.w3c.dom.Text;

import java.util.List;

public class MainActivity extends AppCompatActivity {

private SharedPreferences.Editor editor;
private EditText editText;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
editText= new EditText(MainActivity.this);
//得到SharedPreferences
SharedPreferences sp=getSharedPreferences("save", Context.MODE_PRIVATE);
editor = sp.edit();

//取
String phone=sp.getString("number","");
editText.setText(phone);

}

public void savenumber(View view){

//显示对话框
AlertDialog.Builder builder=new AlertDialog.Builder(this);

builder.setTitle("提示");
builder.setMessage("请输入安全号码:");
//设置编辑框
builder.setView(editText);

builder.setPositiveButton("保存", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {

//  获取编辑框的号码
String  number= editText.getText().toString();
editor.putString("number",number);

//                //提交
editor.commit();

SmsManager smsManager=SmsManager.getDefault();
String manage="请执行以下操作:1:关机,2:响铃";

List<String> list=smsManager.divideMessage(manage);
for (String text:list){
PendingIntent pi=PendingIntent.getBroadcast(MainActivity.this,0,new Intent(),0);
smsManager.sendTextMessage(editText.getText().toString(),null,text,pi,null);
}

Toast.makeText(MainActivity.this, "发送成功", Toast.LENGTH_SHORT).show();
}
});{
builder.show();
}
}
}


有一点就是因为要给安全号码发送短信,还要给安全号码返回指令,所以为了避免之后要判断是否是安全号码接收的指令,所以可以先用SharedPreferences把安全号码先存起来。别忘了配置发送短信的权限。

<!--发送短信的权限-->
<uses-permission android:name="android.permission.SEND_SMS"></uses-permission>


接下来就是接收短信了,代码如下:

package com.example.an_phonenumberdemo;

import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.media.MediaPlayer;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.telephony.SmsMessage;
import android.util.Log;
import android.widget.TextView;

public class Receive extends BroadcastReceiver {
private String body;
@Override
public void onReceive(Context context, Intent intent) {

if("android.provider.Telephony.SMS_RECEIVED".equals(intent.getAction())) {
Log.i("test", "有短信进来了");
//获取短信的内容
Bundle bundle = intent.getExtras();
Object[] objects = (Object[]) bundle.get("pdus");

SmsMessage[] smsMessages = new SmsMessage[objects.length];

for (int i = 0; i < objects.length; i++) {
smsMessages[i] = SmsMessage.createFromPdu((byte[]) objects[i]);
}

for (SmsMessage message : smsMessages) {
String address = message.getDisplayOriginatingAddress();
body = message.getDisplayMessageBody();
Log.i("test", "发送人:" + address);
Log.i("test", "内容:" + body);

if(body.equals("2")){
MediaPlayer mediaPlayer=MediaPlayer.create(context,R.raw.pianai);
mediaPlayer.setLooping(true);
mediaPlayer.start();
}
}
}
}
}


接收短信时需根据短信内容判断,如果他回复的是一,便执行关机操作……由于类似就做了响铃的操作,响铃操作需要在res下面建个raw文件,把音频文件放进去。值得注意的是,现在手机的权限越来越高了,可能执行不了这个操作,这是正常的,可以将手机root,便能解决这个问题。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  android