Невозможно записать входящий и исходящий голосовой вызов, и приложение закрывается в фоновом режиме при закрытии приложения - PullRequest
1 голос
/ 23 апреля 2020

ниже код, который я пытаюсь

MainActivity. java

пакет com.aravindchowdary.callrecorder.CallRecording;

импорт android .manifest; import android .app.admin.DevicePolicyManager; import android .content.ComponentName; import android .content.Context; import android .content.Intent; import android .content.SharedPreferences; import android .content.pm.PackageManager; импорт android. net .Uri; import android .preference.PreferenceManager;

import androidx.core.app.ActivityCompat; import androidx.core.content.ContextCompat; import androidx.appcompat.app.AppCompatActivity;

import android .os.Bundle; import android .util.Log; import android .view.View; import android .widget.Button; import android .widget.EditText; import android .widget.Toast;

import com.aravindchowdary.callrecorder.Preferences; import com.aravindchowdary.callrecorder.R;

import java .util.ArrayList; import java .util.List;

publi c Класс RecordActivity расширяет AppCompatActivity {private boolean checkResume = false; приватный струнный телефон; частный EditText etCall; личные настройки предпочтений; publi c stati c final String TAG = "PhoneStateReceiver"; личное состояние c final int REQUEST_CODE = 0; частный DevicePolicyManager mDPM; private ComponentName mAdminName;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_record);
    preferences = Preferences.getSharedPrefInstance(this);

    SharedPreferences pref = PreferenceManager.getDefaultSharedPreferences(this);
    pref.edit().putInt("numOfCalls", 0).apply();

    Button btnCall = findViewById(R.id.btnCall);
    etCall = findViewById(R.id.etCall);


    btnCall.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            if (validateCall()) {
                preferences.saveCall(true);
                Log.d(TAG, "PrefcallSave: " + preferences.getcall());
                Intent intent = new Intent(Intent.ACTION_DIAL, Uri.fromParts("tel", phone, null));
                startActivity(intent);
            }
        }
    });

}

private boolean validateCall() {
    phone = etCall.getText().toString().trim();
    if (phone.isEmpty()) {
        etCall.setError("Phone number can't be empty");
    } else {
        return true;
    }
    return false;
}

@Override
protected void onResume() {
    super.onResume();
    Log.e("Check", "onResume: ");
    if (checkPermission()) {
        if (checkResume == false) {
        }
    }
}

protected void onPause() {
    super.onPause();
    SharedPreferences pref3 = PreferenceManager.getDefaultSharedPreferences(this);
    if (pref3.getBoolean("pauseStateVLC", false)) {
        checkResume = true;
        pref3.edit().putBoolean("pauseStateVLC", false).apply();
    } else
        checkResume = false;
}

private boolean checkPermission() {
    int i = 0;
    String[] perm = {Manifest.permission.READ_PHONE_STATE, Manifest.permission.RECORD_AUDIO,

Manifest.permission.READ_EXTERNAL_STORAGE, Manifest.permission.WRITE_EXTERNAL_STORAGE, Manifest.permission.READ_CONTACTS}; List reqPerm = new ArrayList <> ();

    for (String permis : perm) {
        int resultPhone = ContextCompat.checkSelfPermission(RecordActivity.this, permis);
        if (resultPhone == PackageManager.PERMISSION_GRANTED)
            i++;
        else {
            reqPerm.add(permis);
        }
    }

    if (i == 5)
        return true;
    else
        return requestPermission(reqPerm);
}


private boolean requestPermission(List<String> perm) {

    String[] listReq = new String[perm.size()];
    listReq = perm.toArray(listReq);
    for (String permissions : listReq) {
        if (ActivityCompat.shouldShowRequestPermissionRationale(RecordActivity.this,

разрешения)) {Toast.makeText (getApplicationContext (), "Разрешения телефона, необходимые для" + разрешения, Toast.LENGTH_LONG); }}

    ActivityCompat.requestPermissions(RecordActivity.this, listReq, 1);


    return false;
}


public void onRequestPermissionsResult(int requestCode, String permissions[], int[] grantResults) {
    switch (requestCode) {
        case 1:
            if (grantResults.length > 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED)
                Toast.makeText(getApplicationContext(), "Permission Granted to access Phone calls", Toast.LENGTH_LONG);
            else
                Toast.makeText(getApplicationContext(), "You can't access Phone calls", Toast.LENGTH_LONG);
            break;
    }

} }

Пожалуйста, помогите мне разобраться в этом вопросе заранее спасибо

...