Состояние вызова Android через класс вызова (API 23)

Пожалуйста, помогите, мне нужно узнать подробный статус звонков. Я нашел класс "вызов" ("https://developer.android.com/reference/android/telecom/Call.html"), который должен давать эти состояния. К сожалению, я не нашел способа использовать этот класс и получить статусы.


person Mokrys    schedule 12.06.2017    source источник
comment
Например, вы хотите закодировать некоторую функциональную реакцию, основанную на состоянии телефона, например, когда он звонит?   -  person DaveNOTDavid    schedule 12.06.2017


Ответы (1)


Просто используйте вместо этого TelephonyManager, который был добавлен в API 1.

Примерный сценарий реализации этого класса выглядит следующим образом:

import android.content.Context;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.telephony.PhoneStateListener;
import android.telephony.TelephonyManager;

public class MainActivity extends AppCompatActivity {

    private PhoneStateListener mPhoneStateListener = new PhoneStateListener() {
        @Override
        public void onCallStateChanged(int state, String incomingNumber) {
            switch (state) {
                case TelephonyManager.CALL_STATE_RINGING:
                    // TODO: Code your functionality response here

                    break;

                // TODO: Configure other phone state cases here if you want
            }
        }
    };

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        TelephonyManager telephonyManager = (TelephonyManager)
                getSystemService(Context.TELEPHONY_SERVICE);
        telephonyManager.listen(mPhoneStateListener, PhoneStateListener.LISTEN_CALL_STATE);
    }
}

И не забудьте включить разрешение состояния телефона в файл манифеста:

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

Дайте мне знать, если это ответит на ваш вопрос.

person DaveNOTDavid    schedule 12.06.2017
comment
К сожалению, я нашел предыдущее решение. Я ищу решения с более подробными состояниями, такими как эти, и класс вызова предоставляет: STATE_ACTIVE, STATE_CONNECTING, STATE_DIALING, STATE_DISCONNECTED, STATE_DISCONNECTING, STATE_HOLDING, STATE_NE, STATE_PULLING_CALL, STATE_RINGING. Я искал везде в Интернете, к сожалению, я не нашел примера использования класса вызова. Здесь я нашел несколько похожих запросов, на которые не ответили. - person Mokrys; 13.06.2017
comment
Спасибо за предыдущий ответ, но он не решает мою проблему. Хочу спросить, можно ли проверить статус вызываемого номера телефона, есть он или нет? - person Mokrys; 13.06.2017