Fixed freeze/crash when denying permanently contacts permission
This commit is contained in:
parent
b940ef0ee5
commit
21fc891fef
2 changed files with 17 additions and 23 deletions
|
@ -83,6 +83,8 @@ public class ContactsManager extends ContentObserver {
|
||||||
private ContactsManager(Handler handler) {
|
private ContactsManager(Handler handler) {
|
||||||
super(handler);
|
super(handler);
|
||||||
contactsUpdatedListeners = new ArrayList<ContactsUpdatedListener>();
|
contactsUpdatedListeners = new ArrayList<ContactsUpdatedListener>();
|
||||||
|
contacts = new ArrayList<LinphoneContact>();
|
||||||
|
sipContacts = new ArrayList<LinphoneContact>();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|
|
@ -1149,43 +1149,35 @@ public class LinphoneActivity extends Activity implements OnClickListener, Conta
|
||||||
if (LinphonePreferences.instance().writeExternalStoragePermAsked()) {
|
if (LinphonePreferences.instance().writeExternalStoragePermAsked()) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
if (getPackageManager().checkPermission(Manifest.permission.WRITE_EXTERNAL_STORAGE, getPackageName()) != PackageManager.PERMISSION_GRANTED) {
|
|
||||||
checkAndRequestPermission(Manifest.permission.WRITE_EXTERNAL_STORAGE, PERMISSIONS_REQUEST_EXTERNAL_FILE_STORAGE);
|
checkAndRequestPermission(Manifest.permission.WRITE_EXTERNAL_STORAGE, PERMISSIONS_REQUEST_EXTERNAL_FILE_STORAGE);
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
public void checkAndRequestCameraPermission() {
|
public void checkAndRequestCameraPermission() {
|
||||||
if (LinphonePreferences.instance().cameraPermAsked()) {
|
if (LinphonePreferences.instance().cameraPermAsked()) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
if (getPackageManager().checkPermission(Manifest.permission.CAMERA, getPackageName()) != PackageManager.PERMISSION_GRANTED) {
|
|
||||||
checkAndRequestPermission(Manifest.permission.CAMERA, PERMISSIONS_REQUEST_CAMERA);
|
checkAndRequestPermission(Manifest.permission.CAMERA, PERMISSIONS_REQUEST_CAMERA);
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
public void checkAndRequestReadContactsPermission() {
|
public void checkAndRequestReadContactsPermission() {
|
||||||
if (LinphonePreferences.instance().readContactsPermAsked()) {
|
if (LinphonePreferences.instance().readContactsPermAsked()) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
if (getPackageManager().checkPermission(Manifest.permission.READ_CONTACTS, getPackageName()) != PackageManager.PERMISSION_GRANTED) {
|
|
||||||
checkAndRequestPermission(Manifest.permission.READ_CONTACTS, PERMISSIONS_REQUEST_CONTACTS);
|
checkAndRequestPermission(Manifest.permission.READ_CONTACTS, PERMISSIONS_REQUEST_CONTACTS);
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
public void checkAndRequestWriteContactsPermission() {
|
public void checkAndRequestWriteContactsPermission() {
|
||||||
if (LinphonePreferences.instance().writeContactsPermAsked()) {
|
if (LinphonePreferences.instance().writeContactsPermAsked()) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
if (getPackageManager().checkPermission(Manifest.permission.WRITE_CONTACTS, getPackageName()) != PackageManager.PERMISSION_GRANTED) {
|
|
||||||
checkAndRequestPermission(Manifest.permission.WRITE_CONTACTS, PERMISSIONS_REQUEST_CONTACTS);
|
checkAndRequestPermission(Manifest.permission.WRITE_CONTACTS, PERMISSIONS_REQUEST_CONTACTS);
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
public void checkAndRequestAudioPermission(boolean isIncomingCall) {
|
public void checkAndRequestAudioPermission(boolean isIncomingCall) {
|
||||||
if (LinphonePreferences.instance().audioPermAsked()) {
|
if (LinphonePreferences.instance().audioPermAsked()) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
ActivityCompat.requestPermissions(this, new String[]{ Manifest.permission.RECORD_AUDIO }, isIncomingCall ? PERMISSIONS_REQUEST_RECORD_AUDIO_INCOMING_CALL : PERMISSIONS_REQUEST_RECORD_AUDIO);
|
checkAndRequestPermission(Manifest.permission.RECORD_AUDIO, isIncomingCall ? PERMISSIONS_REQUEST_RECORD_AUDIO_INCOMING_CALL : PERMISSIONS_REQUEST_RECORD_AUDIO);
|
||||||
if (LinphonePreferences.instance().shouldInitiateVideoCall() ||
|
if (LinphonePreferences.instance().shouldInitiateVideoCall() ||
|
||||||
LinphonePreferences.instance().shouldAutomaticallyAcceptVideoRequests()) {
|
LinphonePreferences.instance().shouldAutomaticallyAcceptVideoRequests()) {
|
||||||
checkAndRequestCameraPermission();
|
checkAndRequestCameraPermission();
|
||||||
|
@ -1204,30 +1196,30 @@ public class LinphoneActivity extends Activity implements OnClickListener, Conta
|
||||||
for (int i = 0; i < grantResults.length; i++) {
|
for (int i = 0; i < grantResults.length; i++) {
|
||||||
if (grantResults[i] == PackageManager.PERMISSION_DENIED) {
|
if (grantResults[i] == PackageManager.PERMISSION_DENIED) {
|
||||||
if (!ActivityCompat.shouldShowRequestPermissionRationale(this, permissions[i])) {
|
if (!ActivityCompat.shouldShowRequestPermissionRationale(this, permissions[i])) {
|
||||||
if (permissions[i] == Manifest.permission.RECORD_AUDIO) {
|
if (permissions[i].equals(Manifest.permission.RECORD_AUDIO)) {
|
||||||
LinphonePreferences.instance().neverAskAudioPerm();
|
LinphonePreferences.instance().neverAskAudioPerm();
|
||||||
} else if (permissions[i] == Manifest.permission.CAMERA) {
|
} else if (permissions[i].equals(Manifest.permission.CAMERA)) {
|
||||||
LinphonePreferences.instance().neverAskCameraPerm();
|
LinphonePreferences.instance().neverAskCameraPerm();
|
||||||
} else if (permissions[i] == Manifest.permission.READ_CONTACTS) {
|
} else if (permissions[i].equals(Manifest.permission.READ_CONTACTS)) {
|
||||||
LinphonePreferences.instance().neverAskReadContactsPerm();
|
LinphonePreferences.instance().neverAskReadContactsPerm();
|
||||||
} else if (permissions[i] == Manifest.permission.WRITE_CONTACTS) {
|
} else if (permissions[i].equals(Manifest.permission.WRITE_CONTACTS)) {
|
||||||
LinphonePreferences.instance().neverAskWriteContactsPerm();
|
LinphonePreferences.instance().neverAskWriteContactsPerm();
|
||||||
} else if (permissions[i] == Manifest.permission.WRITE_EXTERNAL_STORAGE) {
|
} else if (permissions[i].equals(Manifest.permission.WRITE_EXTERNAL_STORAGE)) {
|
||||||
LinphonePreferences.instance().neverAskWriteExternalStoragePerm();
|
LinphonePreferences.instance().neverAskWriteExternalStoragePerm();
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
//TODO: show dialog explaining what we need the permission for
|
//TODO: show dialog explaining what we need the permission for
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
if (permissions[i] == Manifest.permission.RECORD_AUDIO) {
|
if (permissions[i].equals(Manifest.permission.RECORD_AUDIO)) {
|
||||||
LinphonePreferences.instance().neverAskAudioPerm();
|
LinphonePreferences.instance().neverAskAudioPerm();
|
||||||
} else if (permissions[i] == Manifest.permission.CAMERA) {
|
} else if (permissions[i].equals(Manifest.permission.CAMERA)) {
|
||||||
LinphonePreferences.instance().neverAskCameraPerm();
|
LinphonePreferences.instance().neverAskCameraPerm();
|
||||||
} else if (permissions[i] == Manifest.permission.READ_CONTACTS) {
|
} else if (permissions[i].equals(Manifest.permission.READ_CONTACTS)) {
|
||||||
LinphonePreferences.instance().neverAskReadContactsPerm();
|
LinphonePreferences.instance().neverAskReadContactsPerm();
|
||||||
} else if (permissions[i] == Manifest.permission.WRITE_CONTACTS) {
|
} else if (permissions[i].equals(Manifest.permission.WRITE_CONTACTS)) {
|
||||||
LinphonePreferences.instance().neverAskWriteContactsPerm();
|
LinphonePreferences.instance().neverAskWriteContactsPerm();
|
||||||
} else if (permissions[i] == Manifest.permission.WRITE_EXTERNAL_STORAGE) {
|
} else if (permissions[i].equals(Manifest.permission.WRITE_EXTERNAL_STORAGE)) {
|
||||||
LinphonePreferences.instance().neverAskWriteExternalStoragePerm();
|
LinphonePreferences.instance().neverAskWriteExternalStoragePerm();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue