android - 避免在收件箱中接收短信 ..android

标签 android sms smsmanager

我想向 SMS 中心发送 SMS 并从中接收结果短信,并在 Edittext 中显示结果......我的主要 Activity 是 LoginActivity .. 当我运行这个程序时,点击按钮后,消息发送到短信中心成功。但是中心的结果短信并没有显示在我的程序中,而是显示在我的收件箱中!我想避免在收件箱中收到消息,我想在我的应用程序中收到此消息!

我在 LoginActivity 中的代码是:

 private void notifyIncoming(String message)
    {
        messageRes.setText(message);
    }

    private BroadcastReceiver receiver = new BroadcastReceiver()
    {
        @Override
        public void onReceive(Context context, Intent intent)
        {

            Object[] pdus = (Object[])intent.getExtras().get("pdus");
            StringBuilder message = new StringBuilder();
            SmsMessage messageSegment;

            for (int i=0;i < pdus.length;i++)
            {
                messageSegment = SmsMessage.createFromPdu((byte[]) pdus[i]);
                message.append(messageSegment.getDisplayMessageBody());
            }

           notifyIncoming(message.toString());

        }


    };

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        mIntentFilter = new IntentFilter();
        mIntentFilter.addAction("android.provider.Telephony.SMS_RECEIVED");


        setContentView(R.layout.activity_login);
        // Set up the login form.
        messageRes = (EditText) findViewById(R.id.code3_txt);

        findViewById(R.id.sign_in_button).setOnClickListener(
                new View.OnClickListener() {
                    @Override
                    public void onClick(View view) {
                        @SuppressWarnings("deprecation")
                        String phoneNumber = "0123456789";          
                        SmsManager smsManager = SmsManager.getDefault();
                        smsManager.sendTextMessage(phoneNumber, null, "Hi", null, null);
                        registerReceiver(receiver, mIntentFilter);

                    }
                });
    }

我的 Manifest.XML 是:

<manifest.................. >


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


    <uses-sdk
        android:minSdkVersion="11"
        android:targetSdkVersion="18" />

    <application
        ............ >

     <activity
            android:name="com.example.accelometer.LoginActivity"
            ............... >
            <intent-filter>
                <action android:name="android.intent.action.MAIN" /> 
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
        <receiver android:name="com.example.accelometer.LoginActivity" >
            <intent-filter android:priority="100">
                <action android:name="android.provider.Telephony.SMS_RECEIVED" />
            </intent-filter>
        </receiver>
    </application>

</manifest>

更新:

更改 onCreate 函数。

 @Override
            protected void onCreate(Bundle savedInstanceState) {
                super.onCreate(savedInstanceState);
                mIntentFilter = new IntentFilter();
                mIntentFilter.addAction("android.provider.Telephony.SMS_RECEIVED");
                registerReceiver(receiver, mIntentFilter);


                setContentView(R.layout.activity_login);
                // Set up the login form.
                messageRes = (EditText) findViewById(R.id.code3_txt);

                findViewById(R.id.sign_in_button).setOnClickListener(
                        new View.OnClickListener() {
                            @Override
                            public void onClick(View view) {
                                @SuppressWarnings("deprecation")
                                String phoneNumber = "0123456789";          
                                SmsManager smsManager = SmsManager.getDefault();
                                smsManager.sendTextMessage(phoneNumber, null, "Hi", null, null);    
                            }
                        });
            }

更新2

我从 <receiver> 中删除了 manifest block ..我可以在我的应用程序中接收短信,但我想避免在收件箱或其他短信应用程序(如环聊等)中显示此短信

最佳答案

对于您尝试做的事情,KitKat 之前有很多解决方案。这可能是最好的例子:

Sending and Receiving SMS and MMS in Android (pre Kit Kat Android 4.4)

对于 KitKat+,我在此处发布了一个需要应用程序的解决方案:

How to prevent SMS going to inbox in Android Kitkat

关于android - 避免在收件箱中接收短信 ..android,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25261341/

相关文章:

android - Cordova Android 4.3 Ajax 状态 404

android - 如何在 Android 上使用访问颜色和渐变?

java - 改造:使用 JSON 数组发送 POST 请求

android - 在 KitKat 上接收短信广播

android - 发送 50 多条导致问题的消息会导致一般性失败

java - 在 Android 中检查 SMS 中的多个关键字

java - 获取 WCDMA 信号强度

php - MySQL Inbox 查询返回双结果

java - 将 byte[] 转换为 String,以短信形式发送,将 byte[] 返回为 String

Android 1.6 SMS(较旧的应用程序代码)