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;
}
} }