在Android手机上,注册到应用程序的SMS消息也会发送到设备的收件箱.但是,为了防止混乱,能够从收件箱中删除特定于应用程序的SMS消息以减少这些消息的潜在溢出是很好的.
关于从Android收件箱中删除短信的程序化方式获得明确答案的其他Google网上论坛的问题似乎并不紧迫.
场景如下:
它完成了吗?可以吗?
我想在一个BroadcastReceiver内部启动Service.我想要做的是有一个后台运行service,收集传入的短信,并记录来电.我认为最好的解决方法是service运行一个包含可以编目的广播接收器.
我该怎么做呢?我已经启动并运行了我的服务.
我的应用程序需要验证用户提供的电话号码.向手机发送短信的绝对最便宜的方式是什么?我应该去哪家公司/ API?我不是在寻找一个黑客解决方案来发送10个短信一个月的事情,我需要推出一个公司,将发送大量的验证.但他们希望以最低的成本做到这一点.(每个用户只需要验证一次)
对不起忘了提到短信需要国际化
我想通过意图发送短信,但是当我使用此代码时,它会将我重定向到错误的联系人:
Intent intentt = new Intent(Intent.ACTION_VIEW);
intentt.setData(Uri.parse("sms:"));
intentt.setType("vnd.android-dir/mms-sms");
intentt.putExtra(Intent.EXTRA_TEXT, "");
intentt.putExtra("address", phone number);
context.startActivity(intentt);
Run Code Online (Sandbox Code Playgroud)
为什么?此外,我知道一种方法来跟踪短信发送,但我不知道如何编码:
Starting activity: Intent {
act=android.intent.action.SENDTO dat=smsto:%2B**XXXXXXXXXXXX** flg=0x14000000
cmp=com.android.mms/.ui.ComposeMessageActivity }
Run Code Online (Sandbox Code Playgroud)
其中XXXXXXXXXXXX是电话号码.
首先,我真的很惊讶这不是重复,因为有很多堆栈溢出问题可以在Objective-C中解决这个问题,但是我还没有看到使用Swift的好答案.
我正在寻找的是Swift中的代码片段,它将任意字符串作为文本消息的正文发送给给定的电话号码.从本质上讲,我希望像这样从苹果的官方文档,但是在斯威夫特,而不是Objective-C的.
我想这不是太难,因为它可以在Android中的几行代码中完成.
编辑:我正在寻找的是5-20行Swift代码,我不同意这是太宽泛了.在Java(适用于Android)中,解决方案如下所示:
package com.company.appname;
import android.app.Activity;
import android.telephony.SmsManager;
public class MainActivity extends Activity {
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
public static final mPhoneNumber = "1111111111";
public static final mMessage = "hello phone";
SmsManager.getDefault().sendTextMessage(mPhoneNumber, null, mMessage, null, null);
}
}
Run Code Online (Sandbox Code Playgroud)
现在这是Android解决方案,它只有11行.Java的往往要比雨燕更详细的,所以我怀疑什么,我问的是"过于宽泛",但更有可能的是,我不知道如何使用Objective-C的MessageComposer对象,因为我链接的文档关于在Swift中的使用情况,上面的内容尚不清楚.
我一直试图让这个程序工作,但到目前为止没有运气.我无法找到我做错的地方.我不确定代码或调试是否有问题.
我正在尝试收到新短信到达时的通知.
这是我的计划:
package Technicaljar.SMSBroadcastReceiver;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.os.Bundle;
import android.telephony.SmsMessage;
import android.util.Log;
public class SMSBroadcastReceiver extends BroadcastReceiver {
private static final String SMS_RECEIVED = "android.provider.Telephony.SMS_RECEIVED";
private static final String TAG = "SMSBroadcastReceiver";
@Override
public void onReceive(Context context, Intent intent) {
Log.i(TAG, "Intent recieved: " + intent.getAction());
if (intent.getAction() == SMS_RECEIVED) {
Bundle bundle = intent.getExtras();
if (bundle != null) {
Object[] pdus = (Object[])bundle.get("pdus");
final SmsMessage[] messages = new SmsMessage[pdus.length];
for (int i …Run Code Online (Sandbox Code Playgroud) 我目前正在开发包含短信的android应用程序.是否可以通过使用Android模拟器发送和接收短信?如果是,我该怎么办?
好.我正在通过我的应用发送短信.发送文本消息后,它会向服务器发送状态更新.这部分工作正常,但我遇到的问题是双重的.我不确定它们是否相关,但我认为它们是相关的.
我的应用程序可以向多个用户发送单个文本.这是代码示例...
if(phoneNumbers.length > 0 && message.getText().toString().equals("") == false)
{
for(int i=0;i<phoneNumbers.length;i++)
{
sms = SmsManager.getDefault();
try
{
sms.sendTextMessage(phoneNumbers[i], null, message.getText().toString(), null, null);
sentQuantity++;
}
catch(IllegalArgumentException e)
{
}
}
}
Run Code Online (Sandbox Code Playgroud)
基本上,它只是循环遍历一组电话号码,并一次发送一个文本.这是我的问题的一部分.如果我选择3个或更多数字来发送文本,有时并不是所有文本都会被发送.它发生得非常随机.
我认为这是因为发送每条消息之间存在延迟,但代码不会等待足够长的时间.我达到了这个假设,因为如果我使用eclipse进入程序并手动浏览应用程序,一切都可以正常工作.
我的另一个问题是当我将文本消息状态更新发送到Web服务器时.
文本消息发送后,应用程序立即连接到互联网,并通过http发布服务器告知服务器发送的文本数量.这是我的互联网代码片段......
for(int i = 0; i < postNames.length; i++)
{
nameValuePairs.add(new BasicNameValuePair(postNames[i], postValues[i]));
}
//http post
try{
HttpParams httpParameters = new BasicHttpParams();
int timeoutConnection = 10000;
HttpConnectionParams.setConnectionTimeout(httpParameters,timeoutConnection );
HttpClient httpclient = new DefaultHttpClient(httpParameters);
HttpPost httppost = new HttpPost(webAddress);
httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs));
HttpResponse response = httpclient.execute(httppost);
HttpEntity entity …Run Code Online (Sandbox Code Playgroud)