diff --git a/AndroidManifest.xml b/AndroidManifest.xml index 799dbb8fd..67a847cb3 100644 --- a/AndroidManifest.xml +++ b/AndroidManifest.xml @@ -27,6 +27,7 @@ + diff --git a/src/org/linphone/CallActivity.java b/src/org/linphone/CallActivity.java index 4b843b6df..cd4c2c498 100644 --- a/src/org/linphone/CallActivity.java +++ b/src/org/linphone/CallActivity.java @@ -454,13 +454,13 @@ public class CallActivity extends Activity implements OnClickListener, SensorEve } @Override - public void onRequestPermissionsResult(int requestCode, String[] permissions, int[] grantResults) { + public void onRequestPermissionsResult(int requestCode, String[] permissions, final int[] grantResults) { switch (requestCode) { case PERMISSIONS_REQUEST_CAMERA: UIThreadDispatcher.dispatch(new Runnable() { @Override public void run() { - acceptCallUpdate(true); + acceptCallUpdate(grantResults[0] == PackageManager.PERMISSION_GRANTED); } }); break; @@ -468,12 +468,11 @@ public class CallActivity extends Activity implements OnClickListener, SensorEve UIThreadDispatcher.dispatch(new Runnable() { @Override public void run() { - enabledOrDisabledVideo(false); + disableVideo(grantResults[0] != PackageManager.PERMISSION_GRANTED); } }); break; } - LinphonePreferences.instance().neverAskCameraPerm(); } public void createInCallStats() { @@ -606,7 +605,7 @@ public class CallActivity extends Activity implements OnClickListener, SensorEve if (id == R.id.video) { if (getPackageManager().checkPermission(Manifest.permission.CAMERA, getPackageName()) == PackageManager.PERMISSION_GRANTED) { - enabledOrDisabledVideo(isVideoEnabled(LinphoneManager.getLc().getCurrentCall())); + disableVideo(isVideoEnabled(LinphoneManager.getLc().getCurrentCall())); } else { checkAndRequestPermission(Manifest.permission.CAMERA, PERMISSIONS_ENABLED_CAMERA); } @@ -719,13 +718,13 @@ public class CallActivity extends Activity implements OnClickListener, SensorEve } } - private void enabledOrDisabledVideo(final boolean isVideoEnabled) { + private void disableVideo(final boolean videoDisabled) { final LinphoneCall call = LinphoneManager.getLc().getCurrentCall(); if (call == null) { return; } - if (isVideoEnabled) { + if (videoDisabled) { LinphoneCallParams params = LinphoneManager.getLc().createCallParams(call); params.setVideoEnabled(false); LinphoneManager.getLc().updateCall(call, params); @@ -1379,7 +1378,7 @@ public class CallActivity extends Activity implements OnClickListener, SensorEve delete.setOnClickListener(new OnClickListener() { @Override public void onClick(View view) { - if (getPackageManager().checkPermission(Manifest.permission.CAMERA, getPackageName()) == PackageManager.PERMISSION_GRANTED || LinphonePreferences.instance().cameraPermAsked()) { + if (getPackageManager().checkPermission(Manifest.permission.CAMERA, getPackageName()) == PackageManager.PERMISSION_GRANTED || !ActivityCompat.shouldShowRequestPermissionRationale(CallActivity.this, Manifest.permission.CAMERA)) { CallActivity.instance().acceptCallUpdate(true); } else { checkAndRequestPermission(Manifest.permission.CAMERA, PERMISSIONS_REQUEST_CAMERA); @@ -1389,9 +1388,7 @@ public class CallActivity extends Activity implements OnClickListener, SensorEve } }); - cancel.setOnClickListener(new - - OnClickListener() { + cancel.setOnClickListener(new OnClickListener() { @Override public void onClick (View view){ if (CallActivity.isInstanciated()) { diff --git a/src/org/linphone/CallIncomingActivity.java b/src/org/linphone/CallIncomingActivity.java index 1e35f9bbc..1aa118f2f 100644 --- a/src/org/linphone/CallIncomingActivity.java +++ b/src/org/linphone/CallIncomingActivity.java @@ -18,6 +18,7 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ package org.linphone; +import java.util.ArrayList; import java.util.List; import org.linphone.core.LinphoneAddress; @@ -49,7 +50,6 @@ import android.widget.Toast; public class CallIncomingActivity extends Activity implements LinphoneSliderTriggered { private static CallIncomingActivity instance; - private static final int PERMISSIONS_REQUEST_CAMERA = 205; private TextView name, number; private ImageView contactPicture, accept, decline; @@ -201,10 +201,8 @@ public class CallIncomingActivity extends Activity implements LinphoneSliderTrig } } }; - - if (LinphonePreferences.instance().isVideoEnabled() && LinphonePreferences.instance().shouldAutomaticallyAcceptVideoRequests()) { - checkAndRequestCameraPermission(); - } + + checkAndRequestCallPermissions(); super.onCreate(savedInstanceState); instance = this; @@ -324,53 +322,20 @@ public class CallIncomingActivity extends Activity implements LinphoneSliderTrig } - private void checkAndRequestCameraPermission() { - if (LinphonePreferences.instance().cameraPermAsked()) { - return; + private void checkAndRequestCallPermissions() { + ArrayList permissionsList = new ArrayList(); + if (ActivityCompat.shouldShowRequestPermissionRationale(this, Manifest.permission.RECORD_AUDIO) && getPackageManager().checkPermission(Manifest.permission.RECORD_AUDIO, getPackageName()) != PackageManager.PERMISSION_GRANTED) { + permissionsList.add(Manifest.permission.RECORD_AUDIO); } - checkAndRequestPermission(Manifest.permission.CAMERA, PERMISSIONS_REQUEST_CAMERA); - } - - private void checkAndRequestPermission(String permission, int result) { - if (getPackageManager().checkPermission(permission, getPackageName()) != PackageManager.PERMISSION_GRANTED) { - ActivityCompat.requestPermissions(this, new String[]{permission}, result); - } - } - - @Override - public void onRequestPermissionsResult(int requestCode, String[] permissions, int[] grantResults) { - if (grantResults.length > 0) { - for (int i = 0; i < grantResults.length; i++) { - if (grantResults[i] == PackageManager.PERMISSION_DENIED) { - if (!ActivityCompat.shouldShowRequestPermissionRationale(this, permissions[i])) { - if (permissions[i].equals(Manifest.permission.RECORD_AUDIO)) { - LinphonePreferences.instance().neverAskAudioPerm(); - } else if (permissions[i].equals(Manifest.permission.CAMERA)) { - LinphonePreferences.instance().neverAskCameraPerm(); - } else if (permissions[i].equals(Manifest.permission.READ_CONTACTS)) { - LinphonePreferences.instance().neverAskReadContactsPerm(); - } else if (permissions[i].equals(Manifest.permission.WRITE_CONTACTS)) { - LinphonePreferences.instance().neverAskWriteContactsPerm(); - } else if (permissions[i].equals(Manifest.permission.WRITE_EXTERNAL_STORAGE)) { - LinphonePreferences.instance().neverAskWriteExternalStoragePerm(); - } - } else { - //TODO: show dialog explaining what we need the permission for - } - } else { - if (permissions[i].equals(Manifest.permission.RECORD_AUDIO)) { - LinphonePreferences.instance().neverAskAudioPerm(); - } else if (permissions[i].equals(Manifest.permission.CAMERA)) { - LinphonePreferences.instance().neverAskCameraPerm(); - } else if (permissions[i].equals(Manifest.permission.READ_CONTACTS)) { - LinphonePreferences.instance().neverAskReadContactsPerm(); - } else if (permissions[i].equals(Manifest.permission.WRITE_CONTACTS)) { - LinphonePreferences.instance().neverAskWriteContactsPerm(); - } else if (permissions[i].equals(Manifest.permission.WRITE_EXTERNAL_STORAGE)) { - LinphonePreferences.instance().neverAskWriteExternalStoragePerm(); - } - } + if (LinphonePreferences.instance().shouldInitiateVideoCall() || LinphonePreferences.instance().shouldAutomaticallyAcceptVideoRequests()) { + if (ActivityCompat.shouldShowRequestPermissionRationale(this, Manifest.permission.CAMERA) && getPackageManager().checkPermission(Manifest.permission.CAMERA, getPackageName()) != PackageManager.PERMISSION_GRANTED) { + permissionsList.add(Manifest.permission.CAMERA); } } + if (permissionsList.size() > 0) { + String[] permissions = new String[permissionsList.size()]; + permissions = permissionsList.toArray(permissions); + ActivityCompat.requestPermissions(this, permissions, 0); + } } } \ No newline at end of file diff --git a/src/org/linphone/CallOutgoingActivity.java b/src/org/linphone/CallOutgoingActivity.java index 4adac7d80..ce24b64de 100644 --- a/src/org/linphone/CallOutgoingActivity.java +++ b/src/org/linphone/CallOutgoingActivity.java @@ -18,6 +18,7 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ package org.linphone; +import java.util.ArrayList; import java.util.List; import org.linphone.core.LinphoneAddress; @@ -48,7 +49,6 @@ import android.widget.Toast; public class CallOutgoingActivity extends Activity implements OnClickListener{ private static CallOutgoingActivity instance; - private static final int PERMISSIONS_REQUEST_CAMERA = 205; private TextView name, number; private ImageView contactPicture, micro, speaker, hangUp; @@ -129,9 +129,7 @@ public class CallOutgoingActivity extends Activity implements OnClickListener{ } }; - if (LinphonePreferences.instance().isVideoEnabled() && LinphonePreferences.instance().shouldInitiateVideoCall()) { - checkAndRequestCameraPermission(); - } + checkAndRequestCallPermissions(); super.onCreate(savedInstanceState); instance = this; @@ -242,53 +240,20 @@ public class CallOutgoingActivity extends Activity implements OnClickListener{ LinphoneManager.getLc().terminateCall(mCall); } - private void checkAndRequestCameraPermission() { - if (LinphonePreferences.instance().cameraPermAsked()) { - return; + private void checkAndRequestCallPermissions() { + ArrayList permissionsList = new ArrayList(); + if (ActivityCompat.shouldShowRequestPermissionRationale(this, Manifest.permission.RECORD_AUDIO) && getPackageManager().checkPermission(Manifest.permission.RECORD_AUDIO, getPackageName()) != PackageManager.PERMISSION_GRANTED) { + permissionsList.add(Manifest.permission.RECORD_AUDIO); } - checkAndRequestPermission(Manifest.permission.CAMERA, PERMISSIONS_REQUEST_CAMERA); - } - - private void checkAndRequestPermission(String permission, int result) { - if (getPackageManager().checkPermission(permission, getPackageName()) != PackageManager.PERMISSION_GRANTED) { - ActivityCompat.requestPermissions(this, new String[]{permission}, result); - } - } - - @Override - public void onRequestPermissionsResult(int requestCode, String[] permissions, int[] grantResults) { - if (grantResults.length > 0) { - for (int i = 0; i < grantResults.length; i++) { - if (grantResults[i] == PackageManager.PERMISSION_DENIED) { - if (!ActivityCompat.shouldShowRequestPermissionRationale(this, permissions[i])) { - if (permissions[i].equals(Manifest.permission.RECORD_AUDIO)) { - LinphonePreferences.instance().neverAskAudioPerm(); - } else if (permissions[i].equals(Manifest.permission.CAMERA)) { - LinphonePreferences.instance().neverAskCameraPerm(); - } else if (permissions[i].equals(Manifest.permission.READ_CONTACTS)) { - LinphonePreferences.instance().neverAskReadContactsPerm(); - } else if (permissions[i].equals(Manifest.permission.WRITE_CONTACTS)) { - LinphonePreferences.instance().neverAskWriteContactsPerm(); - } else if (permissions[i].equals(Manifest.permission.WRITE_EXTERNAL_STORAGE)) { - LinphonePreferences.instance().neverAskWriteExternalStoragePerm(); - } - } else { - //TODO: show dialog explaining what we need the permission for - } - } else { - if (permissions[i].equals(Manifest.permission.RECORD_AUDIO)) { - LinphonePreferences.instance().neverAskAudioPerm(); - } else if (permissions[i].equals(Manifest.permission.CAMERA)) { - LinphonePreferences.instance().neverAskCameraPerm(); - } else if (permissions[i].equals(Manifest.permission.READ_CONTACTS)) { - LinphonePreferences.instance().neverAskReadContactsPerm(); - } else if (permissions[i].equals(Manifest.permission.WRITE_CONTACTS)) { - LinphonePreferences.instance().neverAskWriteContactsPerm(); - } else if (permissions[i].equals(Manifest.permission.WRITE_EXTERNAL_STORAGE)) { - LinphonePreferences.instance().neverAskWriteExternalStoragePerm(); - } - } + if (LinphonePreferences.instance().shouldInitiateVideoCall() || LinphonePreferences.instance().shouldAutomaticallyAcceptVideoRequests()) { + if (ActivityCompat.shouldShowRequestPermissionRationale(this, Manifest.permission.CAMERA) && getPackageManager().checkPermission(Manifest.permission.CAMERA, getPackageName()) != PackageManager.PERMISSION_GRANTED) { + permissionsList.add(Manifest.permission.CAMERA); } } + if (permissionsList.size() > 0) { + String[] permissions = new String[permissionsList.size()]; + permissions = permissionsList.toArray(permissions); + ActivityCompat.requestPermissions(this, permissions, 0); + } } } diff --git a/src/org/linphone/ChatFragment.java b/src/org/linphone/ChatFragment.java index d1e2ede31..de94d40de 100644 --- a/src/org/linphone/ChatFragment.java +++ b/src/org/linphone/ChatFragment.java @@ -192,7 +192,7 @@ public class ChatFragment extends Fragment implements OnClickListener, LinphoneC @Override public void onClick(View v) { pickImage(); - LinphoneActivity.instance().checkAndRequestCameraPermission(); + LinphoneActivity.instance().checkAndRequestPermissionsToSendImage(); } }); //registerForContextMenu(sendImage); diff --git a/src/org/linphone/LinphoneActivity.java b/src/org/linphone/LinphoneActivity.java index 0fd75b9c2..990ccd3ff 100644 --- a/src/org/linphone/LinphoneActivity.java +++ b/src/org/linphone/LinphoneActivity.java @@ -106,9 +106,10 @@ public class LinphoneActivity extends Activity implements OnClickListener, Conta private static final int PERMISSIONS_REQUEST_CONTACTS = 200; private static final int PERMISSIONS_REQUEST_RECORD_AUDIO = 201; private static final int PERMISSIONS_REQUEST_RECORD_AUDIO_INCOMING_CALL = 203; - private static final int PERMISSIONS_REQUEST_EXTERNAL_FILE_STORAGE = 204; + private static final int PERMISSIONS_REQUEST_EXTERNAL_FILE_STORAGE_WRITE = 204; private static final int PERMISSIONS_REQUEST_CAMERA = 205; private static final int PERMISSIONS_REQUEST_OVERLAY = 206; + private static final int PERMISSIONS_REQUEST_EXTERNAL_FILE_STORAGE_READ = 207; private static LinphoneActivity instance; @@ -234,16 +235,16 @@ public class LinphoneActivity extends Activity implements OnClickListener, Conta @Override public void callState(LinphoneCore lc, LinphoneCall call, LinphoneCall.State state, String message) { if (state == State.IncomingReceived) { - if (getPackageManager().checkPermission(Manifest.permission.RECORD_AUDIO, getPackageName()) == PackageManager.PERMISSION_GRANTED || LinphonePreferences.instance().audioPermAsked()) { + if (getPackageManager().checkPermission(Manifest.permission.RECORD_AUDIO, getPackageName()) == PackageManager.PERMISSION_GRANTED || !ActivityCompat.shouldShowRequestPermissionRationale(LinphoneActivity.this, Manifest.permission.RECORD_AUDIO)) { startActivity(new Intent(LinphoneActivity.instance(), CallIncomingActivity.class)); } else { - checkAndRequestAudioPermission(true); + checkAndRequestCallPermissions(true); } } else if (state == State.OutgoingInit || state == State.OutgoingProgress) { - if (getPackageManager().checkPermission(Manifest.permission.RECORD_AUDIO, getPackageName()) == PackageManager.PERMISSION_GRANTED || LinphonePreferences.instance().audioPermAsked()) { + if (getPackageManager().checkPermission(Manifest.permission.RECORD_AUDIO, getPackageName()) == PackageManager.PERMISSION_GRANTED || !ActivityCompat.shouldShowRequestPermissionRationale(LinphoneActivity.this, Manifest.permission.RECORD_AUDIO)) { startActivity(new Intent(LinphoneActivity.instance(), CallOutgoingActivity.class)); } else { - checkAndRequestAudioPermission(false); + checkAndRequestCallPermissions(false); } } else if (state == State.CallEnd || state == State.Error || state == State.CallReleased) { resetClassicMenuLayoutAndGoBackToCallIfStillRunning(); @@ -1164,43 +1165,56 @@ public class LinphoneActivity extends Activity implements OnClickListener, Conta } return true; } + + public void checkAndRequestReadExternalStoragePermission() { + checkAndRequestPermission(Manifest.permission.READ_EXTERNAL_STORAGE, PERMISSIONS_REQUEST_EXTERNAL_FILE_STORAGE_READ); + } public void checkAndRequestExternalStoragePermission() { - if (LinphonePreferences.instance().writeExternalStoragePermAsked()) { - return; - } - checkAndRequestPermission(Manifest.permission.WRITE_EXTERNAL_STORAGE, PERMISSIONS_REQUEST_EXTERNAL_FILE_STORAGE); + checkAndRequestPermission(Manifest.permission.WRITE_EXTERNAL_STORAGE, PERMISSIONS_REQUEST_EXTERNAL_FILE_STORAGE_WRITE); } public void checkAndRequestCameraPermission() { - if (LinphonePreferences.instance().cameraPermAsked()) { - return; - } checkAndRequestPermission(Manifest.permission.CAMERA, PERMISSIONS_REQUEST_CAMERA); } public void checkAndRequestReadContactsPermission() { - if (LinphonePreferences.instance().readContactsPermAsked()) { - return; - } checkAndRequestPermission(Manifest.permission.READ_CONTACTS, PERMISSIONS_REQUEST_CONTACTS); } public void checkAndRequestWriteContactsPermission() { - if (LinphonePreferences.instance().writeContactsPermAsked()) { - return; - } checkAndRequestPermission(Manifest.permission.WRITE_CONTACTS, PERMISSIONS_REQUEST_CONTACTS); } - public void checkAndRequestAudioPermission(boolean isIncomingCall) { - if (LinphonePreferences.instance().audioPermAsked()) { - return; + public void checkAndRequestCallPermissions(boolean isIncomingCall) { + ArrayList permissionsList = new ArrayList(); + if (ActivityCompat.shouldShowRequestPermissionRationale(this, Manifest.permission.RECORD_AUDIO) && getPackageManager().checkPermission(Manifest.permission.RECORD_AUDIO, getPackageName()) != PackageManager.PERMISSION_GRANTED) { + permissionsList.add(Manifest.permission.RECORD_AUDIO); } - checkAndRequestPermission(Manifest.permission.RECORD_AUDIO, isIncomingCall ? PERMISSIONS_REQUEST_RECORD_AUDIO_INCOMING_CALL : PERMISSIONS_REQUEST_RECORD_AUDIO); - if (LinphonePreferences.instance().shouldInitiateVideoCall() || - LinphonePreferences.instance().shouldAutomaticallyAcceptVideoRequests()) { - checkAndRequestCameraPermission(); + if (LinphonePreferences.instance().shouldInitiateVideoCall() || LinphonePreferences.instance().shouldAutomaticallyAcceptVideoRequests()) { + if (ActivityCompat.shouldShowRequestPermissionRationale(this, Manifest.permission.CAMERA) && getPackageManager().checkPermission(Manifest.permission.CAMERA, getPackageName()) != PackageManager.PERMISSION_GRANTED) { + permissionsList.add(Manifest.permission.CAMERA); + } + } + if (permissionsList.size() > 0) { + String[] permissions = new String[permissionsList.size()]; + permissions = permissionsList.toArray(permissions); + ActivityCompat.requestPermissions(this, permissions, isIncomingCall ? PERMISSIONS_REQUEST_RECORD_AUDIO_INCOMING_CALL : PERMISSIONS_REQUEST_RECORD_AUDIO); + } + } + + public void checkAndRequestPermissionsToSendImage() { + ArrayList permissionsList = new ArrayList(); + if (ActivityCompat.shouldShowRequestPermissionRationale(this, Manifest.permission.READ_EXTERNAL_STORAGE) && getPackageManager().checkPermission(Manifest.permission.READ_EXTERNAL_STORAGE, getPackageName()) != PackageManager.PERMISSION_GRANTED) { + permissionsList.add(Manifest.permission.READ_EXTERNAL_STORAGE); + } + if (ActivityCompat.shouldShowRequestPermissionRationale(this, Manifest.permission.CAMERA) && getPackageManager().checkPermission(Manifest.permission.CAMERA, getPackageName()) != PackageManager.PERMISSION_GRANTED) { + permissionsList.add(Manifest.permission.CAMERA); + } + if (permissionsList.size() > 0) { + String[] permissions = new String[permissionsList.size()]; + permissions = permissionsList.toArray(permissions); + ActivityCompat.requestPermissions(this, permissions, 0); } } @@ -1212,39 +1226,6 @@ public class LinphoneActivity extends Activity implements OnClickListener, Conta @Override public void onRequestPermissionsResult(int requestCode, String[] permissions, int[] grantResults) { - if (grantResults.length > 0) { - for (int i = 0; i < grantResults.length; i++) { - if (grantResults[i] == PackageManager.PERMISSION_DENIED) { - if (!ActivityCompat.shouldShowRequestPermissionRationale(this, permissions[i])) { - if (permissions[i].equals(Manifest.permission.RECORD_AUDIO)) { - LinphonePreferences.instance().neverAskAudioPerm(); - } else if (permissions[i].equals(Manifest.permission.CAMERA)) { - LinphonePreferences.instance().neverAskCameraPerm(); - } else if (permissions[i].equals(Manifest.permission.READ_CONTACTS)) { - LinphonePreferences.instance().neverAskReadContactsPerm(); - } else if (permissions[i].equals(Manifest.permission.WRITE_CONTACTS)) { - LinphonePreferences.instance().neverAskWriteContactsPerm(); - } else if (permissions[i].equals(Manifest.permission.WRITE_EXTERNAL_STORAGE)) { - LinphonePreferences.instance().neverAskWriteExternalStoragePerm(); - } - } else { - //TODO: show dialog explaining what we need the permission for - } - } else { - if (permissions[i].equals(Manifest.permission.RECORD_AUDIO)) { - LinphonePreferences.instance().neverAskAudioPerm(); - } else if (permissions[i].equals(Manifest.permission.CAMERA)) { - LinphonePreferences.instance().neverAskCameraPerm(); - } else if (permissions[i].equals(Manifest.permission.READ_CONTACTS)) { - LinphonePreferences.instance().neverAskReadContactsPerm(); - } else if (permissions[i].equals(Manifest.permission.WRITE_CONTACTS)) { - LinphonePreferences.instance().neverAskWriteContactsPerm(); - } else if (permissions[i].equals(Manifest.permission.WRITE_EXTERNAL_STORAGE)) { - LinphonePreferences.instance().neverAskWriteExternalStoragePerm(); - } - } - } - } switch (requestCode) { case PERMISSIONS_REQUEST_RECORD_AUDIO: startActivity(new Intent(this, CallOutgoingActivity.class)); @@ -1292,16 +1273,16 @@ public class LinphoneActivity extends Activity implements OnClickListener, Conta LinphoneCall call = LinphoneManager.getLc().getCalls()[0]; LinphoneCall.State callState = call.getState(); if (callState == State.IncomingReceived) { - if (getPackageManager().checkPermission(Manifest.permission.RECORD_AUDIO, getPackageName()) == PackageManager.PERMISSION_GRANTED || LinphonePreferences.instance().audioPermAsked()) { + if (getPackageManager().checkPermission(Manifest.permission.RECORD_AUDIO, getPackageName()) == PackageManager.PERMISSION_GRANTED || !ActivityCompat.shouldShowRequestPermissionRationale(this, Manifest.permission.RECORD_AUDIO)) { startActivity(new Intent(this, CallIncomingActivity.class)); } else { - checkAndRequestAudioPermission(true); + checkAndRequestCallPermissions(true); } } else if (callState == State.OutgoingInit || callState == State.OutgoingProgress || callState == State.OutgoingRinging) { - if (getPackageManager().checkPermission(Manifest.permission.RECORD_AUDIO, getPackageName()) == PackageManager.PERMISSION_GRANTED || LinphonePreferences.instance().audioPermAsked()) { + if (getPackageManager().checkPermission(Manifest.permission.RECORD_AUDIO, getPackageName()) == PackageManager.PERMISSION_GRANTED || !ActivityCompat.shouldShowRequestPermissionRationale(this, Manifest.permission.RECORD_AUDIO)) { startActivity(new Intent(this, CallOutgoingActivity.class)); } else { - checkAndRequestAudioPermission(false); + checkAndRequestCallPermissions(false); } } else { if (call.getCurrentParamsCopy().getVideoEnabled()) { @@ -1381,10 +1362,10 @@ public class LinphoneActivity extends Activity implements OnClickListener, Conta if (CallActivity.isInstanciated()) { CallActivity.instance().startIncomingCallActivity(); } else { - if (getPackageManager().checkPermission(Manifest.permission.RECORD_AUDIO, getPackageName()) == PackageManager.PERMISSION_GRANTED || LinphonePreferences.instance().audioPermAsked()) { + if (getPackageManager().checkPermission(Manifest.permission.RECORD_AUDIO, getPackageName()) == PackageManager.PERMISSION_GRANTED || !ActivityCompat.shouldShowRequestPermissionRationale(this, Manifest.permission.RECORD_AUDIO)) { startActivity(new Intent(this, CallIncomingActivity.class)); } else { - checkAndRequestAudioPermission(true); + checkAndRequestCallPermissions(true); } } } diff --git a/src/org/linphone/LinphonePreferences.java b/src/org/linphone/LinphonePreferences.java index 5f9a6eb5f..a4db6c5f7 100644 --- a/src/org/linphone/LinphonePreferences.java +++ b/src/org/linphone/LinphonePreferences.java @@ -1287,46 +1287,6 @@ public class LinphonePreferences { return getConfig().getString("app", "debug_popup_magic", null); } - public Boolean audioPermAsked(){ - return getConfig().getBool("app", "audio_perm", false); - } - - public void neverAskAudioPerm(){ - getConfig().setBool("app", "audio_perm", true); - } - - public Boolean cameraPermAsked(){ - return getConfig().getBool("app", "camera_perm", false); - } - - public void neverAskCameraPerm(){ - getConfig().setBool("app", "camera_perm", true); - } - - public Boolean readContactsPermAsked(){ - return getConfig().getBool("app", "read_contacts_perm", false); - } - - public void neverAskReadContactsPerm(){ - getConfig().setBool("app", "read_contacts_perm", true); - } - - public Boolean writeContactsPermAsked(){ - return getConfig().getBool("app", "write_contacts_perm", false); - } - - public void neverAskWriteContactsPerm(){ - getConfig().setBool("app", "write_contacts_perm", true); - } - - public Boolean writeExternalStoragePermAsked(){ - return getConfig().getBool("app", "write_external_storage_perm", false); - } - - public void neverAskWriteExternalStoragePerm(){ - getConfig().setBool("app", "write_external_storage_perm", true); - } - public String getActivityToLaunchOnIncomingReceived() { return getConfig().getString("app", "incoming_call_activity", "org.linphone.LinphoneActivity"); }