在没有任何提示的情况下发送短信并阅读收到的短信

时间:2014-09-01 05:02:08

标签: android actionscript-3 flash air-native-extension

我正在使用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中接收短信?我想阅读仅从我/服务器发送的短信。

1 个答案:

答案 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();