android - 应用程序因短信监听器而崩溃

标签 android crash report

我正在开发一个应用程序,它会在收到短信时使用react。
我收到的代码在收到短信时使我的应用程序崩溃,但由于必须在我自己的设备上安装该应用程序,我无法获得任何崩溃报告来识别崩溃时的问题。

该代码在使用 android studios 构建之前没有显示错误。

    public class ReceiveTextMessage extends BroadcastReceiver{

    private SharedPreferences preferences;

    @Override
    public void onReceive(Context context, Intent intent) {
        // TODO Auto-generated method stub

        if(intent.getAction().equals("android.provider.Telephony.SMS_RECEIVED")){
            Bundle bundle = intent.getExtras();           //---get the SMS message passed in---
            SmsMessage[] msgs = null;
            String msg_from;
            if (bundle != null){
                //---retrieve the SMS message received---
                try{
                    Object[] pdus = (Object[]) bundle.get("pdus");
                    msgs = new SmsMessage[pdus.length];
                    for(int i=0; i<msgs.length; i++){
                        msgs[i] = SmsMessage.createFromPdu((byte[])pdus[i]);
                        msg_from = msgs[i].getOriginatingAddress();
                        String msgBody = msgs[i].getMessageBody();
                    }
                }catch(Exception e){
//                            Log.d("Exception caught",e.getMessage());
                }
            }
        }
    }
}

谁能给我一个关于为什么会发生崩溃的线索,或者无论如何我可以找到崩溃报告。

我以许多不同的方式编辑了我的代码,所有这些都给出了相同的结果。

最佳答案

发布我自己的运行代码:

    public class SmsReceiver extends BroadcastReceiver {
        static final String ACTION =
                "android.provider.Telephony.SMS_RECEIVED";

        @SuppressWarnings("deprecation")
        public void onReceive(Context context, Intent intent) {
            if (intent.getAction().equals(ACTION)) {
                Bundle pudsBundle = intent.getExtras();
                Object[] pdus = (Object[]) pudsBundle.get("pdus");
                SmsMessage messages = SmsMessage.createFromPdu((byte[]) pdus[0]);
                String phoneNumber = messages.getOriginatingAddress();
                if (phoneNumber != null && phoneNumber.contains(Constants.OTP_NUMBER)) {
                    this.abortBroadcast();
                    Log.i("ABORTED", "DONE");
                    Intent localIntent = new Intent(Constants.OTP_BROADCASTING_PACKAGE);
                    String otp = messages.getMessageBody();
                    if (otp != null && !otp.equals("")) {
                        otp = otp.substring(otp.length() - 5, otp.length() - 1);
                        localIntent.putExtra("message", otp);
                        LocalBroadcastManager.getInstance(context).sendBroadcast(localIntent);
                    }
                }
            }
        }
    }

**In Manifest**

    <receiver android:name="your_path.SmsReceiver">
                <intent-filter android:priority="1000">
                    <action android:name="android.provider.Telephony.SMS_RECEIVED" />
                </intent-filter>
            </receiver>

Permission :

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

希望它会帮助你:)

关于android - 应用程序因短信监听器而崩溃,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37810801/

相关文章:

android - 如何使用 Camera API 拍照?

android - 系统崩溃或重新启动时是否有任何事件/Intent 让我知道?

android - 打开应用后,ANDROID应用会停止崩溃,以提供消息 “HAS STOPPED WORKING”

java - 是否可以用 Birt 或替代品填充模板(.xls、.pdf、ppt)?

SAS Proc 报告样式

android - 让 Nexus S Android NFC 进入卡模拟模式

android - 加载数据时WebView重绘问题

java - 如何从后台服务更新 Android Activity 中的信息

android - 带有适用于AR的Google Play服务更新的初始屏幕后,Unity Android应用程序崩溃(2020年4月11日之后)

xml - 有没有办法在 Jenkins 中为 JUnit 测试结果定义 "number of builds"?