簡體   English   中英

為什么在調試時,intent.getExtras()。mMap為null?

[英]Why intent.getExtras().mMap is null when I debug?

我有這樣的BroadCastReceiver:

public class MyReceiver extends BroadcastReceiver {
    @Override
    public void onReceive(Context context, Intent intent) {
        System.out.println(Arrays.toString(intent.getExtras().keySet().toArray()));

    }
}

AndroidManifest.xml中:

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
      package="com.angryyogurt.yotransfer">

<uses-permission android:name="android.permission.RECEIVE_SMS"/>
<uses-permission android:name="android.permission.INTERNET"/>
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
<uses-permission android:name="android.permission.READ_PHONE_STATE"/>
<uses-permission android:name="android.permission.PROCESS_OUTGOING_CALLS"/>


<application
    android:allowBackup="true"
    android:icon="@drawable/ic_launcher"
    android:label="@string/app_name"
    android:theme="@style/AppTheme">
    <activity
        android:name=".MainActivity"
        android:label="@string/app_name">
        <intent-filter>
            <action android:name="android.intent.action.MAIN"/>

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

    <receiver android:name=".NewIncomingReceiver">
        <intent-filter>
            <action
                android:name="android.provider.Telephony.SMS_RECEIVED"
                android:priority="1010"/>
            <action
                android:name="android.intent.action.NEW_OUTGOING_CALL"
                android:priority="1010"/>
            <action
                android:name="android.intent.action.PHONE_STATE"
                android:priority="1010"/>
        </intent-filter>
    </receiver>

</application>

</manifest>

我用它來收聽短信。 當我嘗試向此手機發送信息時,它會打印密鑰集[format, pdus, slot, phone, subscription]

但是當我調試它並在System.out.println...處設置斷點時,我看到intent.mExtras.mMap為null。 為什么是這樣? 如何在調試期間檢查意圖中的地圖項?

實例變量mMap僅在附加組件被解組(未組合,反序列化)后填充。 如果你沒有做任何事情導致額外的東西被解組, mMap將為null

嘗試這個:

public class MyReceiver extends BroadcastReceiver {
    @Override
    public void onReceive(Context context, Intent intent) {
        boolean b = intent.hasExtra("blah");
        System.out.println(Arrays.toString(
                intent.getExtras().keySet().toArray()));
    }
}

調用hasExtra()將強制附加組件Bundle被解組。 System.out.println()上設置斷點,你應該看到mMap的附加mMap

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM