Изменение состояния телефона BroadcastReceiver не работает на Sony Xperia Z5 Android 6.0

Я пытался запустить приложение, которое прослушивало бы вызовы phone_state. Однако, похоже, это не так. Либо так и есть, но для того, чтобы, наконец, слушать, требуется время, или он вообще не слушает.

Это беспокоило меня все время, так как оно работает на всех устройствах, на которых я тестировал, кроме Sony Xperia Z5. Я добавил необходимые разрешения и разрешения времени выполнения в Activity. Какова основная цель, чтобы позвонить по номеру из приложения. А затем прослушайте изменения состояния на телефоне.

Код для BroadcastReceiver:

public class OutgoingCallReceiver extends BroadcastReceiver {

    static CallPromptView mCallPromptView;
    Context context;

    @Override
    public void onReceive(Context context, Intent intent) {
        this.context = context;
            TelephonyManager tm = (TelephonyManager) context.getSystemService(Context.TELEPHONY_SERVICE);
            if(intent.getAction().equals(Intent.ACTION_NEW_OUTGOING_CALL)) {
            String number = intent.getStringExtra(Intent.EXTRA_PHONE_NUMBER);
            if(!TextUtils.isEmpty(number)){
                setPrefPhoneNumber(number);
            }
        }
        else if(intent.getAction().equals(TelephonyManager.ACTION_PHONE_STATE_CHANGED)){
            String number = getPrefPhoneNumber();
            if(tm.getCallState() == TelephonyManager.CALL_STATE_OFFHOOK ||
                    tm.getCallState() == TelephonyManager.CALL_STATE_RINGING) {
                Log.d("STATE", "Phonestate : " + tm.getCallState());
            }else if(tm.getCallState() == TelephonyManager.CALL_STATE_IDLE) {
                Log.d("STATE", "Phonestate idle");
                }
            }
        }
    }
}

AndroidManifest.xml:

    <!-- Phone call permissions -->
    <uses-permission android:name="android.permission.READ_PHONE_STATE" />
    <uses-permission android:name="android.permission.PROCESS_OUTGOING_CALLS" />
    <uses-permission android:name="android.permission.CALL_PHONE" />

    <!-- GPS permissions -->
    <uses-permission android:name="com.google.android.providers.gsf.permission.READ_GSERVICES" />
    <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
    <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
   <application
        android:allowBackup="true"
        android:fullBackupContent="true"
        android:icon="@drawable/ic_launcher"
        android:label="@string/app_name"
        android:theme="@style/AppTheme">

        <activity
            android:name=".ui.MainActivity"
            android:screenOrientation="portrait">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
        <receiver android:name=".receiver.OutgoingCallReceiver"
            android:enabled="true">
            <intent-filter>
                <action android:name="android.intent.action.NEW_OUTGOING_CALL" />
                <action android:name="android.intent.action.PHONE_STATE" />
            </intent-filter>
        </receiver>

        <meta-data
            android:name="com.google.android.gms.version"
            android:value="@integer/google_play_services_version" />
        <meta-data
            android:name="com.google.android.maps.v2.API_KEY"
            android:value="@string/google_maps_key" />
    </application>

    <!-- Window permissions -->
    <uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW" />

0 ответов

Другие вопросы по тегам