首页 > 编程知识 正文

安卓 自动转发短信,手机短信自动发送

时间:2023-05-03 07:12:36 阅读:286429 作者:2581

输入框输入号码,点击发送按钮时发送短信到特定号码,也可以从通讯录直接读取,进行判断(当第一次输入或者获取通讯录号码时保存在SharedPreferences),第二次就直接存在,具体的代码如下:

public class MainActivity extends AppCompatActivity { private EditText et_sms_number; private PendingIntent pendingIntent; private SmsManager smsManager; private SharedPreferences.Editor editor; private Button btn_main_tel; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); et_sms_number = (EditText) findViewById(R.id.et_sms_number); btn_main_tel = (Button) findViewById(R.id.btn_main_tel); btn_main_tel.setOnClickListener(new Button.OnClickListener() { @Override public void onClick(View v) { // TODO Auto-generated method stub Intent intent = new Intent(Intent.ACTION_PICK, ContactsContract.Contacts.CONTENT_URI); MainActivity.this.startActivityForResult(intent, 1); } }); pendingIntent = PendingIntent.getBroadcast(this,0,new Intent(),0); smsManager = SmsManager.getDefault(); //使用SharedPreferences保存数据方法如下: //实例化SharedPreferences对象(第一步) SharedPreferences mySharedPreferences = getSharedPreferences("RememberNumber", Context.MODE_PRIVATE); //实例化SharedPreferences.Editor对象(第二步) editor = mySharedPreferences.edit(); String number=mySharedPreferences.getString("number",""); et_sms_number.setText(number); } @Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { // TODO Auto-generated method stub super.onActivityResult(requestCode, resultCode, data); switch (requestCode) { case 1: if (resultCode == RESULT_OK) { Uri contactData = data.getData(); Cursor cursor = managedQuery(contactData, null, null, null, null); cursor.moveToFirst(); String nums = this.getContactPhone(cursor); Log.i("test", "所选手机号为:" + nums); //将编辑器直接赋值 et_sms_number.setText(nums); } break; default: break; } } private String getContactPhone(Cursor cursor) { // TODO Auto-generated method stub int phoneColumn = cursor .getColumnIndex(ContactsContract.Contacts.HAS_PHONE_NUMBER); int phoneNum = cursor.getInt(phoneColumn); String result = ""; if (phoneNum > 0) { // 获得联系人的ID号 int idColumn = cursor.getColumnIndex(ContactsContract.Contacts._ID); String contactId = cursor.getString(idColumn); // 获得联系人电话的cursor Cursor phone = getContentResolver().query( ContactsContract.CommonDataKinds.Phone.CONTENT_URI, null, ContactsContract.CommonDataKinds.Phone.CONTACT_ID + "=" + contactId, null, null); if (phone.moveToFirst()) { for (; !phone.isAfterLast(); phone.moveToNext()) { int index = phone .getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER); int typeindex = phone .getColumnIndex(ContactsContract.CommonDataKinds.Phone.TYPE); int phone_type = phone.getInt(typeindex); String phoneNumber = phone.getString(index); result = phoneNumber; } if (!phone.isClosed()) { phone.close(); } } } return result; } public void sender(View view) { //拿到收入框的号码 final String number = et_sms_number.getText().toString(); AlertDialog.Builder builder = new AlertDialog.Builder(MainActivity.this); builder.setTitle("提示信息"); builder.setIcon(R.drawable.star); builder.setMessage("你确定将"+number+"设为安全号码吗?"); builder.setPositiveButton("确定", new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialogInterface, int i) { smsManager.sendTextMessage(number,null,"恭喜你,你的号码已是安全号码!n根据以下序号回复:1:关机,2:警报",pendingIntent,null); //Toast.makeText(MainActivity.this, "设置成功", Toast.LENGTH_SHORT).show(); } }); builder.setNegativeButton("取消",null); builder.show(); editor.putString("number",number); editor.commit(); }}

sendTextMessage方法中第一个参数表示短信的目的电话号码,第二个参数表示短信服务中心号码,如果为null则使用默认的短信服务中心号码。第三个参数表示短信内容,第四个参数表示发送短信结果内容,第五个参数表示发送短信到目的地址后的回复信息。
manifest中加入发送短信的权限,如下:

<uses-permission Android:name="android.permission.SEND_SMS"></uses-permission>

读取联系人权限,如下:

……..

<uses-permission android:name="android.permission.READ_CONTACTS"></uses-permission>

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。