广播接收器无法正确获取短信内容

分词器

我正在创建一个应用程序,它将获取文本消息的内容并将其显示在弹出窗口中。收到短信时,我的广播接收器无法拍摄。

广播接收器类

public class SMSReceiver extends BroadcastReceiver {

    @Override
    public void onReceive(Context context, Intent intent) {
        Bundle bundle = intent.getExtras();
        Object[] pdus = (Object[]) bundle.get("pdus");
        SmsMessage[] msgs = new SmsMessage[pdus.length];

        /** sms sender phone */
        String smsSender = "";

        /** body of received sms */
        String smsBody = "";

        /** timerstamp */
        long timestamp = 0L;

        for (int i = 0; i < msgs.length; i++) {
            msgs[i] = SmsMessage.createFromPdu((byte[]) pdus[i]);
            smsSender += msgs[i].getOriginatingAddress();
            smsBody += msgs[i].getMessageBody().toString();
            timestamp += msgs[i].getTimestampMillis();

        }
        intent.putExtra("sender", smsSender);
        intent.putExtra("body", smsBody);
        intent.putExtra("timestamp", timestamp);
    }

}

Dialog Activity公共类PopSMSActivity扩展了Activity {

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        showDialog();
    }

    private void showDialog() {
        final String sms_sender = getIntent().getStringExtra("sender");
        final String sms_body = getIntent().getStringExtra("body");
        final long timestamp = getIntent().getLongExtra("timestamp", 0L);
        final String display = sms_sender + "\n" + sms_body + "\n" + timestamp;
        AlertDialog.Builder builder = new AlertDialog.Builder(this);
        builder.setMessage(display)
                .setCancelable(false)
                .setPositiveButton("Reply",
                        new DialogInterface.OnClickListener() {
                            public void onClick(DialogInterface dialog, int id) {
                                // reply by calling SMS program
                                smsReply(sms_sender, sms_body);
                            }
                        })
                .setNegativeButton("Close",
                        new DialogInterface.OnClickListener() {
                            public void onClick(DialogInterface dialog, int id) {
                                // go back to the phone home screen
                                goHome();
                            }
                        });
        AlertDialog alert = builder.create();
        alert.show();
    }

    private void smsReply(String sender, String body) {
        Intent sendIntent = new Intent(Intent.ACTION_VIEW);
        sendIntent.putExtra("address", sender);
        sendIntent.putExtra("sms_body", body);
        sendIntent.setType("vnd.android-dir/mms-sms");
        startActivity(sendIntent);
        this.finish(); // close this Activity now
    }

    private void goHome() {
        Intent intent = new Intent(Intent.ACTION_MAIN);
        intent.addCategory(Intent.CATEGORY_HOME);
        intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
        startActivity(intent);
        this.finish();
    }
}

显现

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

    <application
        android:allowBackup="true"
        android:icon="@drawable/ic_launcher"
        android:label="@string/app_name"
        android:theme="@style/AppTheme" >
        <receiver android:name="com.example.intereceptsms.SMSReceiver" >
            <intent-filter
                android:exported="true"
                android:priority="999" >
                <action android:name="android.provider.Telephony.SMS_RECEIVED" />
            </intent-filter>
        </receiver>

        <activity
            android:name="com.example.intereceptsms.PopSMSActivity"
            android:label="@string/app_name" >
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
    </application>

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

</manifest>

我没有提出任何错误,所以肯定有我缺少的东西,任何帮助都会很大。谢谢你。

常用软件

收到短信时我的广播接收器无法拍摄

那是因为除了创建Intent,然后它会忽略之外,它什么也没做大概您的计划是开始PopSMSActivity,在这种情况下,您需要startActivity()致电。

还要注意,尽管这对于实验来说是很好的,但是如果某些东西仅仅由于收到一条短信而占据了前台,那么用户可能会非常恼火。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

应用内广播接收器

来自分类Dev

AlarmManager无法从广播接收器工作

来自分类Dev

使用清单注册广播接收器

来自分类Dev

无法在清单文件上注册广播接收器

来自分类Dev

片段中的广播接收器无法从服务接收意图

来自分类Dev

广播接收器未注销

来自分类Dev

我的通知无法播放广播接收器

来自分类Dev

android:广播接收器首先在我的应用中获取短信的优先级值

来自分类Dev

广播接收器的生命周期

来自分类Dev

广播接收器vs唤醒广播接收器

来自分类Dev

通知广播接收器的片段或活动

来自分类Dev

如何编写监视收入短信并在Toast中显示的广播接收器

来自分类Dev

广播接收器未注册

来自分类Dev

为什么在我的广播接收器中无法识别我的字符串-发送短信代码

来自分类Dev

接收并注册广播接收器

来自分类Dev

无法使用广播接收器执行操作

来自分类Dev

AlarmManager无法从广播接收器工作

来自分类Dev

广播接收器始终无法充电

来自分类Dev

无法在清单文件上注册广播接收器

来自分类Dev

广播接收器或服务?

来自分类Dev

android:广播接收器在我的应用程序中首先获取短信的优先级值

来自分类Dev

无法通过此代码接收消息(广播接收器)

来自分类Dev

如何编写监视收入短信并在Toast中显示的广播接收器

来自分类Dev

广播接收器

来自分类Dev

如何在广播短信接收器中使用数据库方法

来自分类Dev

为什么在我的广播接收器中无法识别我的字符串-发送短信代码

来自分类Dev

OTP广播接收器无法分段工作

来自分类Dev

我的广播接收器未从本地服务接收广播

来自分类Dev

Android 广播接收器未接收显式广播?

Related 相关文章

热门标签

归档