我正在创建应用程序使用闪存cs 6。我需要从我的应用程序发送短信。我创建了本地扩展,它将发送短信。它使用默认的短信,manager.It运行良好。但当我使用它发送短信时,它会提示我一条消息,它可能会导致您的移动帐户收费。有没有办法在不发短信的情况下发送短信?我听到一些应用程序在安装开始时询问应用程序是否可以发送短信。当用户同意从应用程序发送短信时,应用程序永远不会提示该消息。有没有办法做到这一点?我也希望应用程序能够读取我发送的短信。
我使用了以下代码来发送短信:
SmsManager smsManager = SmsManager.getDefault();
smsManager.sendTextMessage(recipient, null, text, null, null);
现在,我还可以使用以下代码读取sms:
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里接收短信?我只想阅读从我/服务器发来的短信。
发布于 2014-09-02 06:53:58
您可能需要查看以下权限:
<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意图过滤器:
<receiver android:name="YourSMSReceiverClass" android:exported="true" >
<intent-filter android:priority="1000">
<action android:name="android.provider.Telephony.SMS_RECEIVED" />
</intent-filter>
</receiver>
在您的接收器中,您可以根据需要处理SMS:
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进入:
this.abortBroadcast();
https://stackoverflow.com/questions/25599093
复制相似问题