我在尝试发送消息时收到错误

2024-02-14

send.setOnClickListener(new OnClickListener() {
    @Override
    public void onClick(View v) {
    // TODO Auto-generated method stub
    //URI uri=uri.parse("sms://+919500518057");
    sendSms("9500518057","message");
    //startActivity(new Intent(Intent.ACTION_VIEW,Uri.parse("sms:"+ "+919500518057")));
    }

    private void sendSms(String phno, String message) {
        // TODO Auto-generated method stub
        Log.v("PhoneNumber",phno);
        Log.v("MEssage", message);
        PendingIntent pi=PendingIntent.getActivity(this, 0, new Intent(this, Object.class), 0);
        SmsManager sms=SmsManager.getDefault();
        sms.sendTextMessage(phno, null, message, pi, null);
    }
});

在清单文件中:

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

我收到如下错误:

PendingIntent 类型中的方法 getActivity(Context, int, Intent, int) 不适用于参数 (new View.OnClickListener(){}, int, Intent, int) 在清单文件中我放置了以下代码


从您的 main 中调用此方法:

private void sendSMS() {
        SMSSend smsSend = new SMSSend();

        smsSend.execCommand();
    }

那么下面两类将负责发送短信。

public class SMSSend {

    private final String CLASS_NAME = this.getClass().getSimpleName();
    private final static String SEND_SMS_FAILURE = "Send SMS command executed and status is failure";
    private String phoneNumber;
    private String messageText;

    /**
     * constructor is defined.
     * 
     * @param CommandProcessor
     *            cmdProcessor
     */
    public SMSSend() {
        super();
    }

    /**
     * execCommand method
     * 
     * It is an overridden here and declared in CommandHandler (base class)
     */
    public void execCommand() {
        try {
            new Thread() {
                public void run() {
                    sendSMS();
                }
            }.start();
        } catch (Exception e) {
            e.printStackTrace();
        }
    }



    /**
     * sendSMS method
     * 
     * It retrieves the command parameters and sends the sms.
     * 
     * @param Command
     *            command
     * @return Status
     */
    private void sendSMS() {
        try {
            SMSSendHelper smsHelper = new SMSSendHelper();
            phoneNumber = "0123456789";
            messageText = "Message Text smaple";
            if (null == phoneNumber || phoneNumber.length() < 2) {
            } else {
                smsHelper.sendSMS(phoneNumber, messageText);
            }
        } catch (Exception e) {
            e.printStackTrace();
        } finally {
        }

    }

}




/**
 * SMSSend class
 * 
 * It is responsible for sending SMSs.
 *  
 */
public class SMSSendHelper {
    private final String CLASS_NAME = this.getClass().getSimpleName();
    private String SENT = "SMS_SENT";
    private String DELIVERED = "SMS_DELIVERED";
    private PendingIntent sentPI;
    private BroadcastReceiver sentReceiver;
    private BroadcastReceiver deliveredReceiver;
    private PendingIntent deliveredPI;
    private static final int SMS_LENGHT = 160;
    private static String status = "";

    /**
     * Constructor is defined
     * 
     * @param Status
     *            smsstatus
     */
    public SMSSendHelper() {
        sentPI = PendingIntent.getBroadcast(ConfigClass.getAppContext(), 0,
                new Intent(SENT), 0);

        deliveredPI = PendingIntent.getBroadcast(ConfigClass.getAppContext(),
                0, new Intent(DELIVERED), 0);
        sentReceiver = new BroadcastReceiver() {
            @Override
            public void onReceive(Context arg0, Intent arg1) {

                switch (getResultCode()) {
                case Activity.RESULT_OK:
                    try {
                        synchronized (lock) {
                            lock.notifyAll();
                        }
                    } catch (Exception e) {
                        e.printStackTrace();
                    }
                    setSendSMSSataus("SMS Sent");
                    break;
                case SmsManager.RESULT_ERROR_GENERIC_FAILURE:
                    try {
                        synchronized (lock) {
                            lock.notifyAll();
                        }
                    } catch (Exception e) {
                        e.printStackTrace();
                    }
                    setSendSMSSataus("Generic failure");
                    break;
                case SmsManager.RESULT_ERROR_NO_SERVICE:
                    try {
                        synchronized (lock) {
                            lock.notifyAll();
                        }
                    } catch (Exception e) {
                    }
                    setSendSMSSataus("No service");
                    break;
                case SmsManager.RESULT_ERROR_NULL_PDU:
                    try {
                        synchronized (lock) {
                            lock.notifyAll();
                        }
                    } catch (Exception e) {
                        e.printStackTrace();
                    }
                    setSendSMSSataus("Null PDU");
                    break;
                case SmsManager.RESULT_ERROR_RADIO_OFF:
                    try {
                        synchronized (lock) {
                            lock.notifyAll();
                        }
                    } catch (Exception e) {
                        e.printStackTrace();
                    }
                    setSendSMSSataus("Radio off");
                    break;
                default:
                    try {
                        synchronized (lock) {
                            lock.notifyAll();
                        }
                    } catch (Exception e) {
                        e.printStackTrace();
                    }
                    break;

                }
                ConfigClass.getAppContext().unregisterReceiver(sentReceiver);
            }
        };
        // ---when the SMS has been sent---
        ConfigClass.getAppContext().registerReceiver(sentReceiver,
                new IntentFilter(SENT));

        deliveredReceiver = new BroadcastReceiver() {
            @Override
            public void onReceive(Context arg0, Intent arg1) {
                switch (getResultCode()) {
                case Activity.RESULT_OK:
                    break;
                case Activity.RESULT_CANCELED:
                    break;
                }
                ConfigClass.getAppContext().unregisterReceiver(
                        deliveredReceiver);
            }
        };

        ConfigClass.getAppContext().registerReceiver(deliveredReceiver,
                new IntentFilter(DELIVERED));
    }

    /**
     * setSendSMSSataus method
     * 
     * @param setSendSMSSataus
     *            currentSataus
     */
    public static void setSendSMSSataus(String currentSataus) {
        status = currentSataus;

    }

    /**
     * getSendSMSSataus method
     * 
     * @return String status
     */
    public String getSendSMSSataus() {
        int i = sentReceiver.getResultCode();
        return status;
    }

    /**
     * sendSMS method
     * 
     * @param String
     *            phoneNumber
     * @param String
     *            message
     * @return Status
     */
    public void sendSMS(String phoneNumber, String message) {
        if (message == null) {
            message = " ";
        }

        SmsManager sms = SmsManager.getDefault();

        if (message.length() > SMS_LENGHT) {
            sendLongSMS(sms, message, phoneNumber);
        } else {
            Log.d("E++++D",phoneNumber+"======>>>>>SOS");

            sms.sendTextMessage(phoneNumber, null, message, sentPI, deliveredPI);
        }
        try {
            synchronized (lock) {
                lock.wait();
            }
        } catch (Exception e) {
            e.printStackTrace();
        }

    }

    private void sendLongSMS(SmsManager sms, String message, String phoneNumber) {
        ArrayList<String> parts = sms.divideMessage(message);
        int numParts = parts.size();
        ArrayList<PendingIntent> sentIntents = new ArrayList<PendingIntent>();
        ArrayList<PendingIntent> deliveryIntents = new ArrayList<PendingIntent>();
        for (int i = 0; i < numParts; i++) {
            sentIntents.add(sentPI);
            deliveryIntents.add(deliveredPI);
        }

        sms.sendMultipartTextMessage(phoneNumber, null, parts, sentIntents,
                deliveryIntents);
    }

    private Object lock = new Object();
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

我在尝试发送消息时收到错误 的相关文章

随机推荐

  • 如何用Java编写UTF-8文件?

    我有一些当前代码 问题是它创建了一个 1252 代码页文件 我想强制它创建一个 UTF 8 文件 任何人都可以帮助我使用这段代码 正如我所说 它目前有效 但我需要强制保存在 utf 上 我可以传递参数或其他东西吗 这就是我所拥有的 非常感谢
  • 在 Windows 中使用 Python 获取日期格式

    在给我的作业示例代码中 出现了这一行 date format locale nl langinfo locale D FMT 但在 Windows 中 该行返回以下错误 File C Users Shadark Dropbox IHM P3
  • 解释 OpenGL ES 背景图像的工作原理

    有人可以解释一下如何在 OpenGL ES 视图上渲染背景图像吗 从设置 OpenGL 环境的基础知识开始 我是 OpenGL 的新手 I m seeing https stackoverflow com questions 3387132
  • 如何使用 Firefox 插件从硬盘读取/写入文件?

    是否可以开发一个可以从硬盘读取 写入文件的 Firefox 插件 我应该使用什么代码 它只是链接 Hypnos 和 ephemient 中提供的代码的复制 和组合 const Cc Ci require chrome create prop
  • 模拟标准输入 - python 3中的多行

    我是 python 新手 一直在使用 python 3 进行学习 我正在使用 python 的单元测试框架来测试我的代码 问题 我需要进行单元测试的函数以以下方式接受输入 def compare a b c input strip spli
  • PHP 中比较的可变位置

    下面两种情况哪个更优化 if var value and if value var 抱歉 如果这与另一个问题重复 但我无法用谷歌搜索出答案 Thanks UPDATE 这称为尤达条件 更多信息here http wiert me 2010
  • 为什么 DRF 可浏览 API 对每个实际请求的多个请求类型运行权限检查?

    我有一个简单的 DRF 列表视图 想要编写一些与以下内容相关的权限POST要求 这导致了错误GET发出了请求 这让我意识到我的权限类在未提交的请求上被多次调用 这是我的文件 权限 py class IsDummy permissions B
  • django 形成 MultipleChoiceField 在保存时恢复为原始值

    我编写了一个自定义 MultipleChoiceField 我一切正常 但是当我提交表单时 即使表单验证正常 所选值也会返回原始选择 我的代码看起来像这样 class ProgrammeField forms MultipleChoiceF
  • 连接池到底是什么?

    我听说过连接池这个术语 并通过谷歌搜索寻找一些参考资料 但不知道何时使用它 我什么时候应该考虑使用 连接池 有什么优点和 连接池的缺点 任何建议 这个想法是 您不会打开和关闭与数据库的单个连接 而是创建一个打开连接的 池 然后重用它们 一旦
  • Cocoa App webview未加载请求

    我已经使用 webview 加载 url 但它没有加载 我已经尝试使用 wkwebview 进行相同的操作 但无法加载网址 我已经做了以下 导入WebKit Info plist 允许任意负载 是 允许任意加载网页内容 是 LOG dnss
  • 使用智能指针实现容器

    好的 所以每个人都知道应该像瘟疫一样避免原始指针并更喜欢智能指针 但是这个建议在实现容器时适用吗 这就是我想要实现的目标 template
  • 在 Msys 上安装 Pip

    我使用 Python 3 5 2 和 Msys 构建了一个简单的 PyGTK 应用程序 但我需要一些默认安装中没有的模块 尽管我可以使用setup py install为了得到它们我宁愿使用pip 我环顾四周发现this https sou
  • 使用 lambda 表达式的嵌套集合创建对象图

    我对利用 lambda 表达式创建属性选择器树感兴趣 使用场景是 我们有一些代码对对象图进行一些递归反射 为了限制递归的范围 我们目前使用 Attributes 来标记应该遍历哪些属性 即获取对象的所有修饰属性 如果该属性是具有修饰属性的引
  • Java接口实现对象?

    是否有 Java 接口隐式实现 java lang Object 当我做这样的事情时出现了这个问题 public static String sizeSort String sa Comparator
  • 在 bash_profile 中设置路径

    为什么设置一个PATH要求 PATH 在最后 PATH Library Frameworks Python framework Versions 2 7 bin PATH 当我附加一条路径时我会这样做 PATH PATH 我如何附加一个PA
  • pylab/networkx;更新后不显示节点标签

    将 matplotlib 更新到当前版本后 我遇到了 networkX 中节点标签的问题 如果我使用nx draw G 命令 我得到一个图表 但没有显示标签 但我们还是举个例子吧 import networkx as nx import m
  • 计算已用时间的 Bash 脚本

    我正在 bash 中编写一个脚本来计算执行命令所用的时间 请考虑 STARTTIME date s command block that takes time to complete ENDTIME date s echo It takes
  • 如何在 p:calendar 中使用 java.time.ZonedDateTime / LocalDateTime

    我一直在 Java EE 应用程序中使用 Joda Time 进行日期时间操作 其中关联客户端提交的日期时间字符串表示形式在将其提交到数据库之前已使用以下转换例程进行转换 即在getAsObject JSF 转换器中的方法 org joda
  • Xampp MySQL 未启动 - “MYSQL 未在 XAMPP 3.2.1 版本上启动...”

    我在我的笔记本电脑上安装了 xampp 版本 3 2 1 之前 mysql 工作正常 但突然 mysql 停止工作 而 apache 和其他人正在工作 当我单击启动 mysql 时 它显示此错误 我使用 Windows 10 8 52 32
  • 我在尝试发送消息时收到错误

    send setOnClickListener new OnClickListener Override public void onClick View v TODO Auto generated method stub URI uri