在后台将短信发送到自己的电话号码,而不会发送到消息列表中

时间:2012-11-07 04:04:48

标签: android iphone objective-c ios windows-phone-7

  

可能重复:
  How to programmatically send SMS on the iPhone?

我不确定是否可能,但我想要达到的目的是,在获得用户许可后,我的应用程序希望通过手机上的应用程序发送格式化的短信。我希望它在后台发生而没有他们看到短信输入屏幕,我希望发送的短信不会出现在消息列表中,只有格式化的接收消息。

甚至可能吗?最初我想在iPhone上实现它,但后来我想将它扩展到Android和wp7。提前谢谢。

5 个答案:

答案 0 :(得分:2)

在iOS上,不,你不能。

但您可以使用第三方服务。

答案 1 :(得分:2)

我不知道其他平台,但在iOS上,如果你的应用想要发送短信,它会询问用户权限,用户将被带到短信界面。 Apple对这些非常严格,但在Android中这可能是可能的。

Sending SMS on iOS documentation

编辑:我不知道你要做什么,但为什么不使用网络?如果您尝试发送的消息表明用户不知道内容或目的地,则不需要通过短信。

答案 2 :(得分:0)

我能想到的唯一选择是将NSHTTPURLRequest发送到提供SMS网关的Web服务。你当然可以在后台做,虽然你(开发人员,而不是用户)可能会产生发送邮件的费用,而发件人似乎不是用户。

答案 3 :(得分:0)

您可以像这样在后台发送短信:

这里我使用按钮点击你可以在后台发送短信没有屏幕出现在用户面前。 (注意:返回如果适用,否则返回空值。)

获取所有者的电话号码:

 TelephonyManager tMgr =(TelephonyManager)mAppContext.getSystemService(Context.TELEPHONY_SERVICE);
 String number = tMgr.getLine1Number();

在点击事件中写下 Pending Intent 此代码。

String message = "HI THIS IS TEST SMS IN ANDROID.";             

/** Creating a pending intent which will be broadcasted when an sms message is successfully sent */
PendingIntent piSent = PendingIntent.getBroadcast(getBaseContext(), 0, new Intent("sent_msg") , 0);

/** Creating a pending intent which will be broadcasted when an sms message is successfully delivered */
PendingIntent piDelivered = PendingIntent.getBroadcast(getBaseContext(), 0, new Intent("delivered_msg"), 0);

/** Getting an instance of SmsManager to sent sms message from the application*/
SmsManager smsManager = SmsManager.getDefault();                

/** Sending the Sms message to the intended party */
smsManager.sendTextMessage(number, null, message, piSent, piDelivered);

使用SmsNotifications

创建extends BroadcastReceiver的班级名称
/**
 * This class handles the SMS sent and sms delivery broadcast intents
 */
public class SmsNotifications extends BroadcastReceiver{

    /**
     * This method will be invoked when the sms sent or sms delivery broadcast intent is received 
     */ 
    @Override
    public void onReceive(Context context, Intent intent) {

        /**
         * Getting the intent action name to identify the broadcast intent ( whether sms sent or sms delivery ) 
         */
        String actionName = intent.getAction();


        if(actionName.equals("sent_msg")){
            switch(getResultCode()){
                case Activity.RESULT_OK:
                    Toast.makeText(context, "Message is sent successfully" , Toast.LENGTH_SHORT).show();
                    break;
                default:
                    Toast.makeText(context, "Error in sending Message", Toast.LENGTH_SHORT).show();
                    break;              
            }           
        }

        if(actionName.equals("delivered_msg")){
            switch(getResultCode()){
                case Activity.RESULT_OK:
                    Toast.makeText(context, "Message is delivered" , Toast.LENGTH_SHORT).show();
                    break;
                default:
                    Toast.makeText(context, "Error in the delivery of message", Toast.LENGTH_SHORT).show();
                    break;

            }

        }       
    }
}

管理您的清单文件:

许可:

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

并且

 <receiver android:name=".SmsNotifications" >
            <intent-filter >
                <action android:name="sent_msg" />
                <action android:name="delivered_msg" />                                
            </intent-filter>
        </receiver>

答案 4 :(得分:0)

您无法在Windows Phone 7中执行此操作。您必须启动与SmsComposeTask类似的MFMessageComposeViewController。这意味着所有文本发送逻辑都在那里处理,你只能调整一些参数。