【问题标题】:Sending a SMS Message from an Android Application without opening chooser?在不打开选择器的情况下从 Android 应用程序发送 SMS 消息?
【发布时间】:2012-12-25 00:33:55
【问题描述】:

在我的 android 应用程序中,我使用以下代码实现了发送 SMS。

   Intent smsIntent = new Intent(Intent.ACTION_VIEW);

    smsIntent.putExtra("sms_body", "Hello World!"); 
    smsIntent.putExtra("address", "0123456789");
    smsIntent.setType("vnd.android-dir/mms-sms");

    startActivity(smsIntent);

我的问题是,如果我的设备上有多个 SMS 应用程序,它会打开选​​择器来选择发件人应用程序。我不想打开选择器;我想在不打开选择器的情况下从 Android 的原生 SMS 应用程序发送。因此,我们将不胜感激。

【问题讨论】:

  • 我认为这是不可能的。 Android 操作系统将始终为用户提供选择其他应用程序的选项。除非他们选择始终使用特定应用程序来执行此类操作。此外,如果用户安装了其他短信应用程序,他们可能更喜欢使用他们喜欢的应用程序,而不是您喜欢的应用程序。
  • 谁是被投票的聪明人。这似乎不是一个合理的问题吗?这是我的客户对其银行应用程序之一的要求。因为它是一个与金融相关的应用程序客户端,希望仅通过适当的渠道发送短信,而不是从某些 3rd 方应用程序发送短信。
  • 在没有 cmets 解释为什么的情况下投反对票 !== 建设性批评。来吧伙计们,如果你不喜欢 Raj 的问题,请帮助他写一个更好的问题。

标签: android sms android-implicit-intent


【解决方案1】:

在我的 android 应用程序中,我使用以下代码实现了发送 SMS。

这不是发送 SMS 消息的正确方式。请使用ACTION_SENDACTION_SENDTO(后者使用smsto: Uri)。您可能会遇到可以发送 SMS 消息但不响应您正在使用的特定 Intent 结构的设备,因为这不是发送 SMS 消息的方式。

我不想打开那个选择器

如果您的用户选择安装另一个 SMS 客户端,他们有权使用它,因为这是他们的设备、他们的 SMS 消息费等。用户可以选择将您的应用设为您的 Intent 的默认应用结构,如果用户选择这样做,那么用户将不会一直看到选择器。

我想在不打开选择器的情况下从 android Native SMS 应用发送

不同的设备可以有不同的“原生短信应用”,由设备制造商给出,所以你无法确定什么是“原生短信应用”。而且,正如我之前提到的,“本机 SMS 应用程序”甚至可能不会响应您正在使用的那个奇怪的 Intent 结构。

【讨论】:

  • 您的真实情况,即用户将有权使用任何第三方应用程序。但这是我的客户对其银行应用程序之一的要求。因为它是一个与金融相关的应用程序,客户只想通过适当的渠道发送短信,而不是通过某些 3rd 方应用程序。
  • 很抱歉,但恐怕您必须告诉您的客户接受这个。例如打开一个 url 也是一样的,用户也可以选择浏览器(除非选择了默认浏览器)。每个制造商都有自己的浏览器等。许多用户更喜欢使用与标准浏览器不同的浏览器。短信应用也是如此。
  • @Raj:“因为它是一个与金融相关的应用程序,客户只想通过适当的渠道发送短信,而不是从某个第 3 方应用程序发送短信”——它们是全部从银行的角度来看第三方应用程序。欢迎银行使用SmsManager 直接发送短信,绕过任何客户。 ACTION_SEND 和亲属背后的全部意义在于给予用户控制权。如果您不想让用户控制,请不要使用此类Intent 结构,而是自己完成工作。
  • @commonsWare:感谢您的建议和您在我的问题上的宝贵时间。
【解决方案2】:

使用短信管理器?

http://developer.android.com/reference/android/telephony/SmsManager.html

void    sendTextMessage(String destinationAddress, String scAddress, String text, PendingIntent sentIntent, PendingIntent deliveryIntent)

发送基于文本的短信。

【讨论】:

    猜你喜欢
    • 2014-12-06
    • 1970-01-01
    • 1970-01-01
    • 2011-06-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-07-14
    • 1970-01-01
    相关资源
    最近更新 更多