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