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

今天写了个小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,便能解决这个问题。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值