在好例子网,分享、交流、成长!
您当前所在位置:首页Java 开发实例Android平台开发 → Android发送接收短信

Android发送接收短信

Android平台开发

下载此实例
  • 开发语言:Java
  • 实例大小:2.04M
  • 下载次数:42
  • 浏览次数:248
  • 发布时间:2020-05-29
  • 实例类别:Android平台开发
  • 发 布 人:一个好例子的男人
  • 文件格式:.zip
  • 所需积分:2
 相关标签: Android and 案例 接收 发送

实例介绍

【实例简介】Android发送接收短信

【实例截图】

from clipboard

【核心代码】

package com.example.demo;

import android.Manifest;
import android.app.Activity;
import android.app.PendingIntent;
import android.content.BroadcastReceiver;
import android.content.ComponentName;
import android.content.Context;
import android.content.Intent;
import android.content.IntentFilter;
import android.content.pm.PackageManager;
import android.graphics.Color;
import android.os.Build;
import android.os.Bundle;
import android.telephony.SmsManager;
import android.text.TextUtils;
import android.view.View;
import android.widget.Button;
import android.widget.CheckBox;
import android.widget.CompoundButton;
import android.widget.EditText;
import android.widget.TextView;
import android.widget.Toast;

import androidx.core.app.ActivityCompat;
import androidx.core.content.ContextCompat;

import java.util.List;

/**
 * 发送短信Demo
 * @description:
 * @author ldm
 * @date 2016-4-22 上午9:07:53
 */
public class SmsActivity extends Activity implements View.OnClickListener {
    public static final String SMS_RECIPIENT_EXTRA = "com.example.demo.SMS_RECIPIENT";
    public static final String ACTION_SMS_SENT = "com.example.demo.SMS_SENT_ACTION";
    private Button sms_send_message;
    private EditText sms_recipient;
    private EditText sms_content;
    private CheckBox sms_enable_receiver;
    private TextView sms_status;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        ActivityCompat.requestPermissions(this,new String[]{Manifest.permission.SEND_SMS} , 1);
        setContentView(R.layout.send_sms_layout);
        initViews();
        initListeners();
        registerSmsReceiver();

    }

    /**
     * 注冊短信监听广播
     *
     * @description:
     * @author ldm
     * @date 2016-4-22 上午9:23:23
     */
    private void registerSmsReceiver() {
        registerReceiver(new BroadcastReceiver() {
            @Override
            public void onReceive(Context context, Intent intent) {
                String message = "null";
                boolean error = true;
                switch (-1) {
                    case Activity.RESULT_OK:
                        message = "发送成功!";
                        error = false;
                        break;
                    case SmsManager.RESULT_ERROR_GENERIC_FAILURE:
                        message = "发送失败";
                        break;
                    case SmsManager.RESULT_ERROR_NO_SERVICE:
                        message = "发送失败";
                        break;
                    case SmsManager.RESULT_ERROR_NULL_PDU:
                        message = "发送失败";
                        break;
                    case SmsManager.RESULT_ERROR_RADIO_OFF:
                        message = "发送失败";
                        break;
                }

                sms_recipient.setEnabled(true);
                sms_content.setEnabled(true);
                sms_content.setText("");

                sms_status.setText(message);
                sms_status.setTextColor(error ? Color.RED : Color.GREEN);
            }
        }, new IntentFilter(ACTION_SMS_SENT));
    }

    /**
     * 监听事件
     *
     * @description:
     * @author ldm
     * @date 2016-4-22 上午9:24:20
     */
    private void initListeners() {
        sms_send_message.setOnClickListener(this);
        // 应用Package管理器
        final PackageManager pm = this.getPackageManager();
        // 获取到应用中指定的组件
        final ComponentName componentName = new ComponentName("com.example.demo","com.example.demo.MyMsmReceiver");
        // 依据组件是否可用的状态来推断sms_enable_receiver的选中状态
        sms_enable_receiver
                .setChecked(pm.getComponentEnabledSetting(componentName) == PackageManager.COMPONENT_ENABLED_STATE_ENABLED);
        // 监听sms_enable_receiver设置广播组件是否可用
        sms_enable_receiver
                .setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
                    public void onCheckedChanged(CompoundButton buttonView,
                                                 boolean isChecked) {
                        // 组件状态设置
                        pm.setComponentEnabledSetting(
                                componentName,
                                isChecked ? PackageManager.COMPONENT_ENABLED_STATE_ENABLED
                                        : PackageManager.COMPONENT_ENABLED_STATE_DISABLED,
                                PackageManager.DONT_KILL_APP);
                    }
                });

    }

    private void initViews() {
        sms_recipient = (EditText) (findViewById(R.id.sms_recipient));
        sms_content = ((EditText) findViewById(R.id.sms_content));
        // 是否打开短信广播接收开关
        sms_enable_receiver = (CheckBox) findViewById(R.id.sms_enable_receiver);
        sms_send_message = (Button) findViewById(R.id.sms_send_message);
        sms_status = (TextView) findViewById(R.id.sms_status);
        if (getIntent().hasExtra(SMS_RECIPIENT_EXTRA)) {
            sms_recipient.setText(getIntent().getExtras().getString(
                    SMS_RECIPIENT_EXTRA));
            sms_content.requestFocus();
        }
    }

    @Override
    public void onClick(View v) {
        if (v.getId() == R.id.sms_send_message) {
            sendSms();
        }
    }

    /**
     * 发送短信
     *
     * @description:
     * @author ldm
     * @date 2016-4-22 上午9:30:38
     */
    private void sendSms() {

        if (TextUtils.isEmpty(sms_recipient.getText())) {
            Toast.makeText(SmsActivity.this, "请输入短信接收者", Toast.LENGTH_SHORT)
                    .show();
            return;
        }

        if (TextUtils.isEmpty(sms_content.getText())) {
            Toast.makeText(SmsActivity.this, "请输入短信内容", Toast.LENGTH_SHORT)
                    .show();
            return;
        }

        sms_recipient.setEnabled(false);
        sms_content.setEnabled(false);

        SmsManager sms = SmsManager.getDefault();

        List<String> messages = sms.divideMessage(sms_recipient.getText()
                .toString());

        String recipient = sms_content.getText().toString();
        for (String message : messages) {
            // 发送短信
            sms.sendTextMessage(recipient, null, message, PendingIntent
                    .getBroadcast(SmsActivity.this, 0, new Intent(
                            ACTION_SMS_SENT), 0), null);
        }

    }
}

实例下载地址

Android发送接收短信

不能下载?内容有错? 点击这里报错 + 投诉 + 提问

好例子网口号:伸出你的我的手 — 分享

网友评论

发表评论

(您的评论需要经过审核才能显示)

查看所有0条评论>>

小贴士

感谢您为本站写下的评论,您的评论对其它用户来说具有重要的参考价值,所以请认真填写。

  • 类似“顶”、“沙发”之类没有营养的文字,对勤劳贡献的楼主来说是令人沮丧的反馈信息。
  • 相信您也不想看到一排文字/表情墙,所以请不要反馈意义不大的重复字符,也请尽量不要纯表情的回复。
  • 提问之前请再仔细看一遍楼主的说明,或许是您遗漏了。
  • 请勿到处挖坑绊人、招贴广告。既占空间让人厌烦,又没人会搭理,于人于己都无利。

关于好例子网

本站旨在为广大IT学习爱好者提供一个非营利性互相学习交流分享平台。本站所有资源都可以被免费获取学习研究。本站资源来自网友分享,对搜索内容的合法性不具有预见性、识别性、控制性,仅供学习研究,请务必在下载后24小时内给予删除,不得用于其他任何用途,否则后果自负。基于互联网的特殊性,平台无法对用户传输的作品、信息、内容的权属或合法性、安全性、合规性、真实性、科学性、完整权、有效性等进行实质审查;无论平台是否已进行审查,用户均应自行承担因其传输的作品、信息、内容而可能或已经产生的侵权或权属纠纷等法律责任。本站所有资源不代表本站的观点或立场,基于网友分享,根据中国法律《信息网络传播权保护条例》第二十二与二十三条之规定,若资源存在侵权或相关问题请联系本站客服人员,点此联系我们。关于更多版权及免责申明参见 版权及免责申明

;
报警