安卓打电话,发短信

简介: 版权声明:本文可能为博主原创文章,若标明出处可随便转载。 https://blog.csdn.net/Jailman/article/details/78027636 类package online.
版权声明:本文可能为博主原创文章,若标明出处可随便转载。 https://blog.csdn.net/Jailman/article/details/78027636

package online.geekgalaxy.layoutlearn;

import android.Manifest;
import android.app.Activity;
import android.app.PendingIntent;
import android.content.Intent;
import android.content.pm.PackageManager;
import android.net.Uri;
import android.os.Bundle;
import android.support.v4.app.ActivityCompat;
import android.telephony.SmsManager;
import android.view.View;
import android.widget.Button;
import android.widget.Toast;

import java.util.regex.Matcher;
import java.util.regex.Pattern;

/**
 * Created by jailman on 2017/9/18.
 */

public class login extends Activity {

    public void SendSMS(String PhoneNumber, String SMS) {
        SmsManager sm = SmsManager.getDefault();
        if (isPhoneNumberValid(PhoneNumber) && isWithin70(SMS)) {
            /**
             * 当两个判定条件都通过时发送短信,先构建一个PendingIntent对象并使用getBroadcast()广播
             * 然后将PendingIntent,短信,电话号码等内容传入SmsManager的sendTextMessage()方法中*/
            try {
                PendingIntent pi = PendingIntent.getBroadcast(login.this, 0, new Intent(), 0);
                sm.sendTextMessage(PhoneNumber, null, SMS, pi, null);
            } catch (Exception e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
            Toast.makeText(login.this, "短信发送成功", Toast.LENGTH_LONG).show();
        } else {
            if (!isPhoneNumberValid(PhoneNumber)) {
                if (!isWithin70(SMS)) {
                    Toast.makeText(login.this, "电话号码格式错误!短信内容超过70个字!请改正!!!", Toast.LENGTH_LONG).show();
                } else {
                    Toast.makeText(login.this, "电话号码格式错误!请改正!!!", Toast.LENGTH_LONG).show();
                }
            } else {
                if (!isWithin70(SMS)) {
                    Toast.makeText(login.this, "短信内容超过70个字!请改正", Toast.LENGTH_LONG).show();
                }
            }
        }
    }


    //判断短信内容是否超过70个字
    public static boolean isWithin70(String s) {
        return s.length() <= 70;
    }

    //判断电话号码的格式是否正确
    public static boolean isPhoneNumberValid(String phoneNumber) {
        boolean valid = false;
        /**
         * 两种电话号码格式
         * ^\\(? 表示可以以(开头
         * (\\d{3}) 表示后面紧跟3个数字
         * \\)? 表示可以以)继续
         * [- ]? 表示在上述格式后面可以使用选择性的“-”继续
         * (\\d{4}) 表示后面紧跟4个数字
         * [- ]? 表示在上述格式后面可以使用选择性的“-"继续
         * (\\d{4})$ 表示以4个数字结束
         * 综上所述:正确的电话号码的格式可以以下面等几种做为参考:
         * (123)456-78900 123-456-78900 12345678900 (123)-456-78900
         * */
        String expression01 = "^\\(?(\\d{3})\\)?[- ]?(\\d{4})[- ]?(\\d{4})$";
        String expression02 = "^\\(?(\\d{3})\\)?[- ]?(\\d{5})[- ]?(\\d{5})$";
        //创建Pattern对象
        Pattern p01 = Pattern.compile(expression01);
        //将Pattern作为参数传入Matcher,当做电话号码phoneNumber的正确格式
        Matcher m01 = p01.matcher(phoneNumber);
        Pattern p02 = Pattern.compile(expression02);
        Matcher m02 = p02.matcher(phoneNumber);
        valid = m01.matches() || m02.matches();
        return valid;
    }


    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.login);

        //sms button
        final Button bomb = (Button) findViewById(R.id.button4);
        bomb.setOnClickListener(new View.OnClickListener() {

            @Override
            public void onClick(View v) {
                String PN = "13xxxxxxx";
                String SMS = "我要用短信轰炸你!这个是安卓发短信功能!";
                SendSMS(PN, SMS);
            }
        });

        //call button
        final Button call = (Button) findViewById(R.id.button5);
        call.setOnClickListener(new View.OnClickListener() {

            @Override
            public void onClick(View v) {
                Intent intent = new Intent(Intent.ACTION_CALL);
                Uri data = Uri.parse("tel:" + "13xxxxxx");
                intent.setData(data);
                if (ActivityCompat.checkSelfPermission(login.this, Manifest.permission.CALL_PHONE) != PackageManager.PERMISSION_GRANTED) {
                    // TODO: Consider calling
                    //    ActivityCompat#requestPermissions
                    // here to request the missing permissions, and then overriding
                    //   public void onRequestPermissionsResult(int requestCode, String[] permissions,
                    //                                          int[] grantResults)
                    // to handle the case where the user grants the permission. See the documentation
                    // for ActivityCompat#requestPermissions for more details.
                    Toast.makeText(login.this, "Call permission denied!", Toast.LENGTH_LONG).show();
                    return;
                }
                startActivity(intent);
        }
    });



}
}


目录
相关文章
|
3天前
|
搜索推荐 编译器 Linux
一个可用于企业开发及通用跨平台的Makefile文件
一款适用于企业级开发的通用跨平台Makefile,支持C/C++混合编译、多目标输出(可执行文件、静态/动态库)、Release/Debug版本管理。配置简洁,仅需修改带`MF_CONFIGURE_`前缀的变量,支持脚本化配置与子Makefile管理,具备完善日志、错误提示和跨平台兼容性,附详细文档与示例,便于学习与集成。
271 116
|
18天前
|
域名解析 人工智能
【实操攻略】手把手教学,免费领取.CN域名
即日起至2025年12月31日,购买万小智AI建站或云·企业官网,每单可免费领1个.CN域名首年!跟我了解领取攻略吧~
|
12天前
|
安全 Java Android开发
深度解析 Android 崩溃捕获原理及从崩溃到归因的闭环实践
崩溃堆栈全是 a.b.c?Native 错误查不到行号?本文详解 Android 崩溃采集全链路原理,教你如何把“天书”变“说明书”。RUM SDK 已支持一键接入。
663 219
|
5天前
|
数据采集 人工智能 自然语言处理
Meta SAM3开源:让图像分割,听懂你的话
Meta发布并开源SAM 3,首个支持文本或视觉提示的统一图像视频分割模型,可精准分割“红色条纹伞”等开放词汇概念,覆盖400万独特概念,性能达人类水平75%–80%,推动视觉分割新突破。
353 34
Meta SAM3开源:让图像分割,听懂你的话
|
10天前
|
人工智能 移动开发 自然语言处理
2025最新HTML静态网页制作工具推荐:10款免费在线生成器小白也能5分钟上手
晓猛团队精选2025年10款真正免费、无需编程的在线HTML建站工具,涵盖AI生成、拖拽编辑、设计稿转代码等多种类型,均支持浏览器直接使用、快速出图与文件导出,特别适合零基础用户快速搭建个人网站、落地页或企业官网。
1589 157
|
存储 人工智能 监控
从代码生成到自主决策:打造一个Coding驱动的“自我编程”Agent
本文介绍了一种基于LLM的“自我编程”Agent系统,通过代码驱动实现复杂逻辑。该Agent以Python为执行引擎,结合Py4j实现Java与Python交互,支持多工具调用、记忆分层与上下文工程,具备感知、认知、表达、自我评估等能力模块,目标是打造可进化的“1.5线”智能助手。
897 61
|
7天前
|
编解码 Linux 数据安全/隐私保护
教程分享免费视频压缩软件,免费视频压缩,视频压缩免费,附压缩方法及学习教程
教程分享免费视频压缩软件,免费视频压缩,视频压缩免费,附压缩方法及学习教程
295 140