我正在使用flash cs创建应用6.我需要从我的应用发送短信。我创建了将发送短信的原生扩展。它使用默认的短信管理器。它工作正常。但当我使用它发送短信时,它会提示我一条消息,表明它可能会导致您的移动帐户收费。有没有办法发送没有该消息的短信?我听到一些应用程序询问应用程序是否可以在安装开始时发送短信。当用户同意从应用程序发送短信时,应用程序永远不会发布该消息。有没有办法做到这一点 ?而且我也想让应用程序读取我发送的短信。
我使用以下代码发送短信:
SmsManager smsManager = SmsManager.getDefault();
smsManager.sendTextMessage(recipient, null, text, null, null);
现在我也可以使用以下代码阅读短信:
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中接收短信?我想阅读仅从我/服务器发送的短信。
答案 0 :(得分:0)
您可能希望查看以下权限:
<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>
在接收器中,您可以根据需要处理短信:
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
}
}
}
}
同样在您的接收器中,您可以通过以下方式阻止短信被传入:
this.abortBroadcast();