首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >不提示发送短信,并阅读收到的短信

不提示发送短信,并阅读收到的短信
EN

Stack Overflow用户
提问于 2014-09-01 13:02:08
回答 1查看 1.2K关注 0票数 1

我正在创建应用程序使用闪存cs 6。我需要从我的应用程序发送短信。我创建了本地扩展,它将发送短信。它使用默认的短信,manager.It运行良好。但当我使用它发送短信时,它会提示我一条消息,它可能会导致您的移动帐户收费。有没有办法在不发短信的情况下发送短信?我听到一些应用程序在安装开始时询问应用程序是否可以发送短信。当用户同意从应用程序发送短信时,应用程序永远不会提示该消息。有没有办法做到这一点?我也希望应用程序能够读取我发送的短信。

我使用了以下代码来发送短信:

代码语言:javascript
运行
复制
 SmsManager smsManager = SmsManager.getDefault();
 smsManager.sendTextMessage(recipient, null, text, null, null);

现在,我还可以使用以下代码读取sms:

代码语言:javascript
运行
复制
Uri uri = Uri.parse("content://sms/inbox");
Cursor c= context.getActivity().getContentResolver().query(uri, null, null ,null,null); 
c.moveToFirst();  

String body = c.getString(c.getColumnIndexOrThrow("body")).toString();
c.close();

有没有办法在手机第一次收到短信的时候,在app里接收短信?我只想阅读从我/服务器发来的短信。

EN

回答 1

Stack Overflow用户

发布于 2014-09-02 06:53:58

您可能需要查看以下权限:

代码语言:javascript
运行
复制
<uses-permission android:name="android.permission.WRITE_SMS" />
<uses-permission android:name="android.permission.SEND_SMS" /> 
<uses-permission android:name="android.permission.READ_SMS" /> 
<uses-permission android:name="android.permission.RECEIVE_SMS" />

要在短信到达设备时接收短信,您需要设置接收器并添加SMS_RECEIVED意图过滤器:

代码语言:javascript
运行
复制
<receiver android:name="YourSMSReceiverClass" android:exported="true" > 
    <intent-filter android:priority="1000"> 
        <action android:name="android.provider.Telephony.SMS_RECEIVED" />
    </intent-filter> 
</receiver>

在您的接收器中,您可以根据需要处理SMS:

代码语言:javascript
运行
复制
public static final String SMS_RECEIVED_ACTION = "android.provider.Telephony.SMS_RECEIVED";
public static final String SMS_EXTRA_NAME = "pdus";

@Override
public void onReceive( Context context, Intent intent ) 
{
    if (SMS_RECEIVED_ACTION.equals(intent.getAction())) 
    {
        Bundle extras = intent.getExtras();
        if ( extras != null )
        {
            Object[] smsExtra = (Object[]) extras.get( SMS_EXTRA_NAME );

            for ( int i = 0; i < smsExtra.length; ++i )
            {
                SmsMessage sms = SmsMessage.createFromPdu((byte[])smsExtra[i]);

                String message = sms.getMessageBody().toString();
                String address = sms.getOriginatingAddress();

                // Here you can add any your code to work with incoming SMS
            }
        }
    }
}

此外,在您的接收器中,您可以通过调用以下命令来阻止SMS进入:

代码语言:javascript
运行
复制
this.abortBroadcast();
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25599093

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档