处理 Android 应用程序在来电时暂停并在通话结束后恢复

Jat*_*rot 5 android

我想在手机接到来电时暂停我的 android 应用程序。通话结束后,我希望我的应用程序自动恢复。

这将如何在 Android 应用程序中实现?

kra*_*ins 4

您必须为 PhoneState 实现一个监听器。我在私人课堂上这样做了:

private class PhoneCallListener extends PhoneStateListener {

    private boolean isPhoneCalling = false;

    // needed for logging
    String TAG = "PhoneCallListener";

    @Override
    public void onCallStateChanged(int state, String incomingNumber) {

        if (TelephonyManager.CALL_STATE_RINGING == state) {
            // phone ringing
            Log.i(TAG, "RINGING, number: " + incomingNumber);
        }

        if (TelephonyManager.CALL_STATE_OFFHOOK == state) {
            // active
            Log.i(TAG, "OFFHOOK");

            isPhoneCalling = true;
        }

        if (TelephonyManager.CALL_STATE_IDLE == state) {
            // run when class initial and phone call ended,
            // need detect flag from CALL_STATE_OFFHOOK
            Log.i(TAG, "IDLE");

            if (isPhoneCalling) {

                Log.i(TAG, "restart app");

                // restart call application
                Intent i = getBaseContext().getPackageManager()
                        .getLaunchIntentForPackage(
                                getBaseContext().getPackageName());
                i.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK
                        | Intent.FLAG_ACTIVITY_CLEAR_TOP
                        | Intent.FLAG_ACTIVITY_SINGLE_TOP);
                startActivity(i);

                isPhoneCalling = false;
            }

        }


}
}
Run Code Online (Sandbox Code Playgroud)

并且需要将权限添加到Manifest-File中

<uses-permission android:name="android.permission.READ_PHONE_STATE" />
Run Code Online (Sandbox Code Playgroud)