Fixed issues with permissions + added logs
This commit is contained in:
parent
7f4fdba689
commit
4b00bfcb55
6 changed files with 175 additions and 84 deletions
|
@ -87,6 +87,7 @@ public class CallActivity extends Activity implements OnClickListener, SensorEve
|
||||||
private final static int SECONDS_BEFORE_DENYING_CALL_UPDATE = 30000;
|
private final static int SECONDS_BEFORE_DENYING_CALL_UPDATE = 30000;
|
||||||
private static final int PERMISSIONS_REQUEST_CAMERA = 202;
|
private static final int PERMISSIONS_REQUEST_CAMERA = 202;
|
||||||
private static final int PERMISSIONS_ENABLED_CAMERA = 203;
|
private static final int PERMISSIONS_ENABLED_CAMERA = 203;
|
||||||
|
private static final int PERMISSIONS_ENABLED_MIC = 204;
|
||||||
|
|
||||||
private static CallActivity instance;
|
private static CallActivity instance;
|
||||||
|
|
||||||
|
@ -446,15 +447,23 @@ public class CallActivity extends Activity implements OnClickListener, SensorEve
|
||||||
}
|
}
|
||||||
|
|
||||||
public void checkAndRequestPermission(String permission, int result) {
|
public void checkAndRequestPermission(String permission, int result) {
|
||||||
if (getPackageManager().checkPermission(permission, getPackageName()) != PackageManager.PERMISSION_GRANTED) {
|
int permissionGranted = getPackageManager().checkPermission(permission, getPackageName());
|
||||||
if (!ActivityCompat.shouldShowRequestPermissionRationale(this,permission)){
|
Log.i("[Permission] " + permission + " is " + (permissionGranted == PackageManager.PERMISSION_GRANTED ? "granted" : "denied"));
|
||||||
ActivityCompat.requestPermissions(this, new String[]{permission}, result);
|
|
||||||
|
if (permissionGranted != PackageManager.PERMISSION_GRANTED) {
|
||||||
|
if (LinphonePreferences.instance().firstTimeAskingForPermission(permission) || ActivityCompat.shouldShowRequestPermissionRationale(this, permission)) {
|
||||||
|
Log.i("[Permission] Asking for " + permission);
|
||||||
|
ActivityCompat.requestPermissions(this, new String[] { permission }, result);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onRequestPermissionsResult(int requestCode, String[] permissions, final int[] grantResults) {
|
public void onRequestPermissionsResult(int requestCode, String[] permissions, final int[] grantResults) {
|
||||||
|
for (int i = 0; i < permissions.length; i++) {
|
||||||
|
Log.i("[Permission] " + permissions[i] + " is " + (grantResults[i] == PackageManager.PERMISSION_GRANTED ? "granted" : "denied"));
|
||||||
|
}
|
||||||
|
|
||||||
switch (requestCode) {
|
switch (requestCode) {
|
||||||
case PERMISSIONS_REQUEST_CAMERA:
|
case PERMISSIONS_REQUEST_CAMERA:
|
||||||
UIThreadDispatcher.dispatch(new Runnable() {
|
UIThreadDispatcher.dispatch(new Runnable() {
|
||||||
|
@ -472,6 +481,16 @@ public class CallActivity extends Activity implements OnClickListener, SensorEve
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
break;
|
break;
|
||||||
|
case PERMISSIONS_ENABLED_MIC:
|
||||||
|
UIThreadDispatcher.dispatch(new Runnable() {
|
||||||
|
@Override
|
||||||
|
public void run() {
|
||||||
|
if (grantResults[0] == PackageManager.PERMISSION_GRANTED) {
|
||||||
|
toggleMicro();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
});
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -518,6 +537,9 @@ public class CallActivity extends Activity implements OnClickListener, SensorEve
|
||||||
video.setImageResource(R.drawable.camera_button);
|
video.setImageResource(R.drawable.camera_button);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
if (getPackageManager().checkPermission(Manifest.permission.CAMERA, getPackageName()) != PackageManager.PERMISSION_GRANTED) {
|
||||||
|
video.setImageResource(R.drawable.camera_button);
|
||||||
|
}
|
||||||
|
|
||||||
if (isSpeakerEnabled) {
|
if (isSpeakerEnabled) {
|
||||||
speaker.setImageResource(R.drawable.speaker_selected);
|
speaker.setImageResource(R.drawable.speaker_selected);
|
||||||
|
@ -525,6 +547,9 @@ public class CallActivity extends Activity implements OnClickListener, SensorEve
|
||||||
speaker.setImageResource(R.drawable.speaker_default);
|
speaker.setImageResource(R.drawable.speaker_default);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (getPackageManager().checkPermission(Manifest.permission.RECORD_AUDIO, getPackageName()) != PackageManager.PERMISSION_GRANTED) {
|
||||||
|
isMicMuted = true;
|
||||||
|
}
|
||||||
if (isMicMuted) {
|
if (isMicMuted) {
|
||||||
micro.setImageResource(R.drawable.micro_selected);
|
micro.setImageResource(R.drawable.micro_selected);
|
||||||
} else {
|
} else {
|
||||||
|
@ -604,14 +629,28 @@ public class CallActivity extends Activity implements OnClickListener, SensorEve
|
||||||
}
|
}
|
||||||
|
|
||||||
if (id == R.id.video) {
|
if (id == R.id.video) {
|
||||||
if (getPackageManager().checkPermission(Manifest.permission.CAMERA, getPackageName()) == PackageManager.PERMISSION_GRANTED) {
|
int camera = getPackageManager().checkPermission(Manifest.permission.CAMERA, getPackageName());
|
||||||
|
Log.i("[Permission] Camera permission is " + (camera == PackageManager.PERMISSION_GRANTED ? "granted" : "denied"));
|
||||||
|
|
||||||
|
if (camera == PackageManager.PERMISSION_GRANTED) {
|
||||||
disableVideo(isVideoEnabled(LinphoneManager.getLc().getCurrentCall()));
|
disableVideo(isVideoEnabled(LinphoneManager.getLc().getCurrentCall()));
|
||||||
} else {
|
} else {
|
||||||
checkAndRequestPermission(Manifest.permission.CAMERA, PERMISSIONS_ENABLED_CAMERA);
|
if (LinphonePreferences.instance().firstTimeAskingForPermission(Manifest.permission.CAMERA) || ActivityCompat.shouldShowRequestPermissionRationale(this, Manifest.permission.CAMERA)) {
|
||||||
|
checkAndRequestPermission(Manifest.permission.CAMERA, PERMISSIONS_ENABLED_CAMERA);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else if (id == R.id.micro) {
|
else if (id == R.id.micro) {
|
||||||
toggleMicro();
|
int recordAudio = getPackageManager().checkPermission(Manifest.permission.RECORD_AUDIO, getPackageName());
|
||||||
|
Log.i("[Permission] Record audio permission is " + (recordAudio == PackageManager.PERMISSION_GRANTED ? "granted" : "denied"));
|
||||||
|
|
||||||
|
if (recordAudio == PackageManager.PERMISSION_GRANTED) {
|
||||||
|
toggleMicro();
|
||||||
|
} else {
|
||||||
|
if (LinphonePreferences.instance().firstTimeAskingForPermission(Manifest.permission.RECORD_AUDIO) || ActivityCompat.shouldShowRequestPermissionRationale(this, Manifest.permission.RECORD_AUDIO)) {
|
||||||
|
checkAndRequestPermission(Manifest.permission.RECORD_AUDIO, PERMISSIONS_ENABLED_MIC);
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
else if (id == R.id.speaker) {
|
else if (id == R.id.speaker) {
|
||||||
toggleSpeaker();
|
toggleSpeaker();
|
||||||
|
@ -1378,10 +1417,17 @@ public class CallActivity extends Activity implements OnClickListener, SensorEve
|
||||||
delete.setOnClickListener(new OnClickListener() {
|
delete.setOnClickListener(new OnClickListener() {
|
||||||
@Override
|
@Override
|
||||||
public void onClick(View view) {
|
public void onClick(View view) {
|
||||||
if (getPackageManager().checkPermission(Manifest.permission.CAMERA, getPackageName()) == PackageManager.PERMISSION_GRANTED || !ActivityCompat.shouldShowRequestPermissionRationale(CallActivity.this, Manifest.permission.CAMERA)) {
|
int camera = getPackageManager().checkPermission(Manifest.permission.CAMERA, getPackageName());
|
||||||
|
Log.i("[Permission] Camera permission is " + (camera == PackageManager.PERMISSION_GRANTED ? "granted" : "denied"));
|
||||||
|
|
||||||
|
if (camera == PackageManager.PERMISSION_GRANTED) {
|
||||||
CallActivity.instance().acceptCallUpdate(true);
|
CallActivity.instance().acceptCallUpdate(true);
|
||||||
} else {
|
} else {
|
||||||
checkAndRequestPermission(Manifest.permission.CAMERA, PERMISSIONS_REQUEST_CAMERA);
|
if (LinphonePreferences.instance().firstTimeAskingForPermission(Manifest.permission.CAMERA) || ActivityCompat.shouldShowRequestPermissionRationale(CallActivity.this, Manifest.permission.CAMERA)) {
|
||||||
|
checkAndRequestPermission(Manifest.permission.CAMERA, PERMISSIONS_REQUEST_CAMERA);
|
||||||
|
} else {
|
||||||
|
CallActivity.instance().acceptCallUpdate(false);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
dialog.dismiss();
|
dialog.dismiss();
|
||||||
|
|
|
@ -201,8 +201,6 @@ public class CallIncomingActivity extends Activity implements LinphoneSliderTrig
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
checkAndRequestCallPermissions();
|
|
||||||
|
|
||||||
super.onCreate(savedInstanceState);
|
super.onCreate(savedInstanceState);
|
||||||
instance = this;
|
instance = this;
|
||||||
|
@ -235,6 +233,8 @@ public class CallIncomingActivity extends Activity implements LinphoneSliderTrig
|
||||||
finish();
|
finish();
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
LinphoneAddress address = mCall.getRemoteAddress();
|
LinphoneAddress address = mCall.getRemoteAddress();
|
||||||
LinphoneContact contact = ContactsManager.getInstance().findContactFromAddress(address);
|
LinphoneContact contact = ContactsManager.getInstance().findContactFromAddress(address);
|
||||||
if (contact != null) {
|
if (contact != null) {
|
||||||
|
@ -245,6 +245,12 @@ public class CallIncomingActivity extends Activity implements LinphoneSliderTrig
|
||||||
}
|
}
|
||||||
number.setText(address.asStringUriOnly());
|
number.setText(address.asStringUriOnly());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected void onStart() {
|
||||||
|
super.onStart();
|
||||||
|
checkAndRequestCallPermissions();
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected void onPause() {
|
protected void onPause() {
|
||||||
|
@ -324,18 +330,38 @@ public class CallIncomingActivity extends Activity implements LinphoneSliderTrig
|
||||||
|
|
||||||
private void checkAndRequestCallPermissions() {
|
private void checkAndRequestCallPermissions() {
|
||||||
ArrayList<String> permissionsList = new ArrayList<String>();
|
ArrayList<String> permissionsList = new ArrayList<String>();
|
||||||
if (ActivityCompat.shouldShowRequestPermissionRationale(this, Manifest.permission.RECORD_AUDIO) && getPackageManager().checkPermission(Manifest.permission.RECORD_AUDIO, getPackageName()) != PackageManager.PERMISSION_GRANTED) {
|
|
||||||
permissionsList.add(Manifest.permission.RECORD_AUDIO);
|
int recordAudio = getPackageManager().checkPermission(Manifest.permission.RECORD_AUDIO, getPackageName());
|
||||||
}
|
Log.i("[Permission] Record audio permission is " + (recordAudio == PackageManager.PERMISSION_GRANTED ? "granted" : "denied"));
|
||||||
if (LinphonePreferences.instance().shouldInitiateVideoCall() || LinphonePreferences.instance().shouldAutomaticallyAcceptVideoRequests()) {
|
int camera = getPackageManager().checkPermission(Manifest.permission.CAMERA, getPackageName());
|
||||||
if (ActivityCompat.shouldShowRequestPermissionRationale(this, Manifest.permission.CAMERA) && getPackageManager().checkPermission(Manifest.permission.CAMERA, getPackageName()) != PackageManager.PERMISSION_GRANTED) {
|
Log.i("[Permission] Camera permission is " + (camera == PackageManager.PERMISSION_GRANTED ? "granted" : "denied"));
|
||||||
permissionsList.add(Manifest.permission.CAMERA);
|
|
||||||
|
if (recordAudio != PackageManager.PERMISSION_GRANTED) {
|
||||||
|
if (LinphonePreferences.instance().firstTimeAskingForPermission(Manifest.permission.RECORD_AUDIO) || ActivityCompat.shouldShowRequestPermissionRationale(this, Manifest.permission.RECORD_AUDIO)) {
|
||||||
|
Log.i("[Permission] Asking for record audio");
|
||||||
|
permissionsList.add(Manifest.permission.RECORD_AUDIO);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
if (LinphonePreferences.instance().shouldInitiateVideoCall() || LinphonePreferences.instance().shouldAutomaticallyAcceptVideoRequests()) {
|
||||||
|
if (camera != PackageManager.PERMISSION_GRANTED) {
|
||||||
|
if (LinphonePreferences.instance().firstTimeAskingForPermission(Manifest.permission.CAMERA) || ActivityCompat.shouldShowRequestPermissionRationale(this, Manifest.permission.CAMERA)) {
|
||||||
|
Log.i("[Permission] Asking for camera");
|
||||||
|
permissionsList.add(Manifest.permission.CAMERA);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
if (permissionsList.size() > 0) {
|
if (permissionsList.size() > 0) {
|
||||||
String[] permissions = new String[permissionsList.size()];
|
String[] permissions = new String[permissionsList.size()];
|
||||||
permissions = permissionsList.toArray(permissions);
|
permissions = permissionsList.toArray(permissions);
|
||||||
ActivityCompat.requestPermissions(this, permissions, 0);
|
ActivityCompat.requestPermissions(this, permissions, 0);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onRequestPermissionsResult(int requestCode, String[] permissions, int[] grantResults) {
|
||||||
|
for (int i = 0; i < permissions.length; i++) {
|
||||||
|
Log.i("[Permission] " + permissions[i] + " is " + (grantResults[i] == PackageManager.PERMISSION_GRANTED ? "granted" : "denied"));
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
|
@ -128,8 +128,6 @@ public class CallOutgoingActivity extends Activity implements OnClickListener{
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
checkAndRequestCallPermissions();
|
|
||||||
|
|
||||||
super.onCreate(savedInstanceState);
|
super.onCreate(savedInstanceState);
|
||||||
instance = this;
|
instance = this;
|
||||||
|
@ -170,6 +168,12 @@ public class CallOutgoingActivity extends Activity implements OnClickListener{
|
||||||
}
|
}
|
||||||
number.setText(address.asStringUriOnly());
|
number.setText(address.asStringUriOnly());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected void onStart() {
|
||||||
|
super.onStart();
|
||||||
|
checkAndRequestCallPermissions();
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected void onPause() {
|
protected void onPause() {
|
||||||
|
@ -242,18 +246,38 @@ public class CallOutgoingActivity extends Activity implements OnClickListener{
|
||||||
|
|
||||||
private void checkAndRequestCallPermissions() {
|
private void checkAndRequestCallPermissions() {
|
||||||
ArrayList<String> permissionsList = new ArrayList<String>();
|
ArrayList<String> permissionsList = new ArrayList<String>();
|
||||||
if (ActivityCompat.shouldShowRequestPermissionRationale(this, Manifest.permission.RECORD_AUDIO) && getPackageManager().checkPermission(Manifest.permission.RECORD_AUDIO, getPackageName()) != PackageManager.PERMISSION_GRANTED) {
|
|
||||||
permissionsList.add(Manifest.permission.RECORD_AUDIO);
|
int recordAudio = getPackageManager().checkPermission(Manifest.permission.RECORD_AUDIO, getPackageName());
|
||||||
}
|
Log.i("[Permission] Record audio permission is " + (recordAudio == PackageManager.PERMISSION_GRANTED ? "granted" : "denied"));
|
||||||
if (LinphonePreferences.instance().shouldInitiateVideoCall() || LinphonePreferences.instance().shouldAutomaticallyAcceptVideoRequests()) {
|
int camera = getPackageManager().checkPermission(Manifest.permission.CAMERA, getPackageName());
|
||||||
if (ActivityCompat.shouldShowRequestPermissionRationale(this, Manifest.permission.CAMERA) && getPackageManager().checkPermission(Manifest.permission.CAMERA, getPackageName()) != PackageManager.PERMISSION_GRANTED) {
|
Log.i("[Permission] Camera permission is " + (camera == PackageManager.PERMISSION_GRANTED ? "granted" : "denied"));
|
||||||
permissionsList.add(Manifest.permission.CAMERA);
|
|
||||||
|
if (recordAudio != PackageManager.PERMISSION_GRANTED) {
|
||||||
|
if (LinphonePreferences.instance().firstTimeAskingForPermission(Manifest.permission.RECORD_AUDIO) || ActivityCompat.shouldShowRequestPermissionRationale(this, Manifest.permission.RECORD_AUDIO)) {
|
||||||
|
Log.i("[Permission] Asking for record audio");
|
||||||
|
permissionsList.add(Manifest.permission.RECORD_AUDIO);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
if (LinphonePreferences.instance().shouldInitiateVideoCall() || LinphonePreferences.instance().shouldAutomaticallyAcceptVideoRequests()) {
|
||||||
|
if (camera != PackageManager.PERMISSION_GRANTED) {
|
||||||
|
if (LinphonePreferences.instance().firstTimeAskingForPermission(Manifest.permission.CAMERA) || ActivityCompat.shouldShowRequestPermissionRationale(this, Manifest.permission.CAMERA)) {
|
||||||
|
Log.i("[Permission] Asking for camera");
|
||||||
|
permissionsList.add(Manifest.permission.CAMERA);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
if (permissionsList.size() > 0) {
|
if (permissionsList.size() > 0) {
|
||||||
String[] permissions = new String[permissionsList.size()];
|
String[] permissions = new String[permissionsList.size()];
|
||||||
permissions = permissionsList.toArray(permissions);
|
permissions = permissionsList.toArray(permissions);
|
||||||
ActivityCompat.requestPermissions(this, permissions, 0);
|
ActivityCompat.requestPermissions(this, permissions, 0);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onRequestPermissionsResult(int requestCode, String[] permissions, int[] grantResults) {
|
||||||
|
for (int i = 0; i < permissions.length; i++) {
|
||||||
|
Log.i("[Permission] " + permissions[i] + " is " + (grantResults[i] == PackageManager.PERMISSION_GRANTED ? "granted" : "denied"));
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -103,8 +103,6 @@ public class LinphoneActivity extends Activity implements OnClickListener, Conta
|
||||||
private static final int FIRST_LOGIN_ACTIVITY = 101;
|
private static final int FIRST_LOGIN_ACTIVITY = 101;
|
||||||
private static final int REMOTE_PROVISIONING_LOGIN_ACTIVITY = 102;
|
private static final int REMOTE_PROVISIONING_LOGIN_ACTIVITY = 102;
|
||||||
private static final int CALL_ACTIVITY = 19;
|
private static final int CALL_ACTIVITY = 19;
|
||||||
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_OVERLAY = 206;
|
private static final int PERMISSIONS_REQUEST_OVERLAY = 206;
|
||||||
private static final int PERMISSIONS_REQUEST_SYNC = 207;
|
private static final int PERMISSIONS_REQUEST_SYNC = 207;
|
||||||
|
|
||||||
|
@ -235,17 +233,9 @@ public class LinphoneActivity extends Activity implements OnClickListener, Conta
|
||||||
@Override
|
@Override
|
||||||
public void callState(LinphoneCore lc, LinphoneCall call, LinphoneCall.State state, String message) {
|
public void callState(LinphoneCore lc, LinphoneCall call, LinphoneCall.State state, String message) {
|
||||||
if (state == State.IncomingReceived) {
|
if (state == State.IncomingReceived) {
|
||||||
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));
|
||||||
startActivity(new Intent(LinphoneActivity.instance(), CallIncomingActivity.class));
|
|
||||||
} else {
|
|
||||||
checkAndRequestCallPermissions(true);
|
|
||||||
}
|
|
||||||
} else if (state == State.OutgoingInit || state == State.OutgoingProgress) {
|
} else if (state == State.OutgoingInit || state == State.OutgoingProgress) {
|
||||||
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));
|
||||||
startActivity(new Intent(LinphoneActivity.instance(), CallOutgoingActivity.class));
|
|
||||||
} else {
|
|
||||||
checkAndRequestCallPermissions(false);
|
|
||||||
}
|
|
||||||
} else if (state == State.CallEnd || state == State.Error || state == State.CallReleased) {
|
} else if (state == State.CallEnd || state == State.Error || state == State.CallReleased) {
|
||||||
resetClassicMenuLayoutAndGoBackToCallIfStillRunning();
|
resetClassicMenuLayoutAndGoBackToCallIfStillRunning();
|
||||||
}
|
}
|
||||||
|
@ -1158,7 +1148,9 @@ public class LinphoneActivity extends Activity implements OnClickListener, Conta
|
||||||
}
|
}
|
||||||
|
|
||||||
public boolean checkAndRequestOverlayPermission() {
|
public boolean checkAndRequestOverlayPermission() {
|
||||||
|
Log.i("[Permission] Draw overlays permission is " + (Compatibility.canDrawOverlays(this) ? "granted" : "denied"));
|
||||||
if (!Compatibility.canDrawOverlays(this)) {
|
if (!Compatibility.canDrawOverlays(this)) {
|
||||||
|
Log.i("[Permission] Asking for overlay");
|
||||||
Intent intent = new Intent(Settings.ACTION_MANAGE_OVERLAY_PERMISSION, Uri.parse("package:" + getPackageName()));
|
Intent intent = new Intent(Settings.ACTION_MANAGE_OVERLAY_PERMISSION, Uri.parse("package:" + getPackageName()));
|
||||||
startActivityForResult(intent, PERMISSIONS_REQUEST_OVERLAY);
|
startActivityForResult(intent, PERMISSIONS_REQUEST_OVERLAY);
|
||||||
return false;
|
return false;
|
||||||
|
@ -1186,30 +1178,25 @@ public class LinphoneActivity extends Activity implements OnClickListener, Conta
|
||||||
checkAndRequestPermission(Manifest.permission.WRITE_CONTACTS, 0);
|
checkAndRequestPermission(Manifest.permission.WRITE_CONTACTS, 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
public void checkAndRequestCallPermissions(boolean isIncomingCall) {
|
|
||||||
ArrayList<String> permissionsList = new ArrayList<String>();
|
|
||||||
if (ActivityCompat.shouldShowRequestPermissionRationale(this, Manifest.permission.RECORD_AUDIO) && getPackageManager().checkPermission(Manifest.permission.RECORD_AUDIO, getPackageName()) != PackageManager.PERMISSION_GRANTED) {
|
|
||||||
permissionsList.add(Manifest.permission.RECORD_AUDIO);
|
|
||||||
}
|
|
||||||
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() {
|
public void checkAndRequestPermissionsToSendImage() {
|
||||||
ArrayList<String> permissionsList = new ArrayList<String>();
|
ArrayList<String> permissionsList = new ArrayList<String>();
|
||||||
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);
|
int readExternalStorage = getPackageManager().checkPermission(Manifest.permission.READ_EXTERNAL_STORAGE, getPackageName());
|
||||||
|
Log.i("[Permission] Read external storage permission is " + (readExternalStorage == PackageManager.PERMISSION_GRANTED ? "granted" : "denied"));
|
||||||
|
int camera = getPackageManager().checkPermission(Manifest.permission.CAMERA, getPackageName());
|
||||||
|
Log.i("[Permission] Camera permission is " + (camera == PackageManager.PERMISSION_GRANTED ? "granted" : "denied"));
|
||||||
|
|
||||||
|
if (readExternalStorage != PackageManager.PERMISSION_GRANTED) {
|
||||||
|
if (LinphonePreferences.instance().firstTimeAskingForPermission(Manifest.permission.READ_EXTERNAL_STORAGE) || ActivityCompat.shouldShowRequestPermissionRationale(this, Manifest.permission.READ_EXTERNAL_STORAGE)) {
|
||||||
|
Log.i("[Permission] Asking for read external storage");
|
||||||
|
permissionsList.add(Manifest.permission.READ_EXTERNAL_STORAGE);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
if (ActivityCompat.shouldShowRequestPermissionRationale(this, Manifest.permission.CAMERA) && getPackageManager().checkPermission(Manifest.permission.CAMERA, getPackageName()) != PackageManager.PERMISSION_GRANTED) {
|
if (camera != PackageManager.PERMISSION_GRANTED) {
|
||||||
permissionsList.add(Manifest.permission.CAMERA);
|
if (LinphonePreferences.instance().firstTimeAskingForPermission(Manifest.permission.CAMERA) || ActivityCompat.shouldShowRequestPermissionRationale(this, Manifest.permission.CAMERA)) {
|
||||||
|
Log.i("[Permission] Asking for camera");
|
||||||
|
permissionsList.add(Manifest.permission.CAMERA);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
if (permissionsList.size() > 0) {
|
if (permissionsList.size() > 0) {
|
||||||
String[] permissions = new String[permissionsList.size()];
|
String[] permissions = new String[permissionsList.size()];
|
||||||
|
@ -1223,20 +1210,24 @@ public class LinphoneActivity extends Activity implements OnClickListener, Conta
|
||||||
}
|
}
|
||||||
|
|
||||||
public void checkAndRequestPermission(String permission, int result) {
|
public void checkAndRequestPermission(String permission, int result) {
|
||||||
if (getPackageManager().checkPermission(permission, getPackageName()) != PackageManager.PERMISSION_GRANTED) {
|
int permissionGranted = getPackageManager().checkPermission(permission, getPackageName());
|
||||||
ActivityCompat.requestPermissions(this, new String[]{permission}, result);
|
Log.i("[Permission] " + permission + " is " + (permissionGranted == PackageManager.PERMISSION_GRANTED ? "granted" : "denied"));
|
||||||
|
|
||||||
|
if (permissionGranted != PackageManager.PERMISSION_GRANTED) {
|
||||||
|
if (LinphonePreferences.instance().firstTimeAskingForPermission(permission) || ActivityCompat.shouldShowRequestPermissionRationale(this, permission)) {
|
||||||
|
Log.i("[Permission] Asking for " + permission);
|
||||||
|
ActivityCompat.requestPermissions(this, new String[] { permission }, result);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onRequestPermissionsResult(int requestCode, String[] permissions, int[] grantResults) {
|
public void onRequestPermissionsResult(int requestCode, String[] permissions, int[] grantResults) {
|
||||||
|
for (int i = 0; i < permissions.length; i++) {
|
||||||
|
Log.i("[Permission] " + permissions[i] + " is " + (grantResults[i] == PackageManager.PERMISSION_GRANTED ? "granted" : "denied"));
|
||||||
|
}
|
||||||
|
|
||||||
switch (requestCode) {
|
switch (requestCode) {
|
||||||
case PERMISSIONS_REQUEST_RECORD_AUDIO:
|
|
||||||
startActivity(new Intent(this, CallOutgoingActivity.class));
|
|
||||||
break;
|
|
||||||
case PERMISSIONS_REQUEST_RECORD_AUDIO_INCOMING_CALL:
|
|
||||||
startActivity(new Intent(this, CallIncomingActivity.class));
|
|
||||||
break;
|
|
||||||
case PERMISSIONS_REQUEST_SYNC:
|
case PERMISSIONS_REQUEST_SYNC:
|
||||||
if (grantResults[0] == PackageManager.PERMISSION_GRANTED) {
|
if (grantResults[0] == PackageManager.PERMISSION_GRANTED) {
|
||||||
ContactsManager.getInstance().initializeSyncAccount(getApplicationContext(), getContentResolver());
|
ContactsManager.getInstance().initializeSyncAccount(getApplicationContext(), getContentResolver());
|
||||||
|
@ -1283,18 +1274,11 @@ public class LinphoneActivity extends Activity implements OnClickListener, Conta
|
||||||
if (LinphoneManager.getLc().getCalls().length > 0) {
|
if (LinphoneManager.getLc().getCalls().length > 0) {
|
||||||
LinphoneCall call = LinphoneManager.getLc().getCalls()[0];
|
LinphoneCall call = LinphoneManager.getLc().getCalls()[0];
|
||||||
LinphoneCall.State callState = call.getState();
|
LinphoneCall.State callState = call.getState();
|
||||||
|
|
||||||
if (callState == State.IncomingReceived) {
|
if (callState == State.IncomingReceived) {
|
||||||
if (getPackageManager().checkPermission(Manifest.permission.RECORD_AUDIO, getPackageName()) == PackageManager.PERMISSION_GRANTED || !ActivityCompat.shouldShowRequestPermissionRationale(this, Manifest.permission.RECORD_AUDIO)) {
|
startActivity(new Intent(this, CallIncomingActivity.class));
|
||||||
startActivity(new Intent(this, CallIncomingActivity.class));
|
|
||||||
} else {
|
|
||||||
checkAndRequestCallPermissions(true);
|
|
||||||
}
|
|
||||||
} else if (callState == State.OutgoingInit || callState == State.OutgoingProgress || callState == State.OutgoingRinging) {
|
} else if (callState == State.OutgoingInit || callState == State.OutgoingProgress || callState == State.OutgoingRinging) {
|
||||||
if (getPackageManager().checkPermission(Manifest.permission.RECORD_AUDIO, getPackageName()) == PackageManager.PERMISSION_GRANTED || !ActivityCompat.shouldShowRequestPermissionRationale(this, Manifest.permission.RECORD_AUDIO)) {
|
startActivity(new Intent(this, CallOutgoingActivity.class));
|
||||||
startActivity(new Intent(this, CallOutgoingActivity.class));
|
|
||||||
} else {
|
|
||||||
checkAndRequestCallPermissions(false);
|
|
||||||
}
|
|
||||||
} else {
|
} else {
|
||||||
if (call.getCurrentParamsCopy().getVideoEnabled()) {
|
if (call.getCurrentParamsCopy().getVideoEnabled()) {
|
||||||
startVideoActivity(call);
|
startVideoActivity(call);
|
||||||
|
@ -1373,11 +1357,7 @@ public class LinphoneActivity extends Activity implements OnClickListener, Conta
|
||||||
if (CallActivity.isInstanciated()) {
|
if (CallActivity.isInstanciated()) {
|
||||||
CallActivity.instance().startIncomingCallActivity();
|
CallActivity.instance().startIncomingCallActivity();
|
||||||
} else {
|
} else {
|
||||||
if (getPackageManager().checkPermission(Manifest.permission.RECORD_AUDIO, getPackageName()) == PackageManager.PERMISSION_GRANTED || !ActivityCompat.shouldShowRequestPermissionRationale(this, Manifest.permission.RECORD_AUDIO)) {
|
startActivity(new Intent(this, CallIncomingActivity.class));
|
||||||
startActivity(new Intent(this, CallIncomingActivity.class));
|
|
||||||
} else {
|
|
||||||
checkAndRequestCallPermissions(true);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -1319,4 +1319,12 @@ public class LinphonePreferences {
|
||||||
public void setLimeEncryption(LinphoneLimeState lime) {
|
public void setLimeEncryption(LinphoneLimeState lime) {
|
||||||
getLc().setLimeEncryption(lime);
|
getLc().setLimeEncryption(lime);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public boolean firstTimeAskingForPermission(String permission) {
|
||||||
|
boolean firstTime = getConfig().getBool("app", permission, true);
|
||||||
|
if (firstTime) {
|
||||||
|
getConfig().setBool("app", permission, false);
|
||||||
|
}
|
||||||
|
return firstTime;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -27,7 +27,6 @@ import org.linphone.core.LinphoneAddress;
|
||||||
import org.linphone.core.LinphoneAddress.TransportType;
|
import org.linphone.core.LinphoneAddress.TransportType;
|
||||||
import org.linphone.core.LinphoneCore;
|
import org.linphone.core.LinphoneCore;
|
||||||
import org.linphone.core.LinphoneCore.RegistrationState;
|
import org.linphone.core.LinphoneCore.RegistrationState;
|
||||||
import org.linphone.core.LinphoneCore.RemoteProvisioningState;
|
|
||||||
import org.linphone.core.LinphoneCoreException;
|
import org.linphone.core.LinphoneCoreException;
|
||||||
import org.linphone.core.LinphoneCoreFactory;
|
import org.linphone.core.LinphoneCoreFactory;
|
||||||
import org.linphone.core.LinphoneCoreListenerBase;
|
import org.linphone.core.LinphoneCoreListenerBase;
|
||||||
|
@ -229,8 +228,12 @@ private static AssistantActivity instance;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void checkAndRequestAudioPermission() {
|
public void checkAndRequestAudioPermission() {
|
||||||
if (getPackageManager().checkPermission(Manifest.permission.RECORD_AUDIO, getPackageName()) != PackageManager.PERMISSION_GRANTED) {
|
int recordAudio = getPackageManager().checkPermission(Manifest.permission.RECORD_AUDIO, getPackageName());
|
||||||
if (!ActivityCompat.shouldShowRequestPermissionRationale(this, Manifest.permission.RECORD_AUDIO)) {
|
Log.i("[Permission] Record audio permission is " + (recordAudio == PackageManager.PERMISSION_GRANTED ? "granted" : "denied"));
|
||||||
|
|
||||||
|
if (recordAudio != PackageManager.PERMISSION_GRANTED) {
|
||||||
|
if (LinphonePreferences.instance().firstTimeAskingForPermission(Manifest.permission.RECORD_AUDIO) || ActivityCompat.shouldShowRequestPermissionRationale(this, Manifest.permission.RECORD_AUDIO)) {
|
||||||
|
Log.i("[Permission] Asking for record audio");
|
||||||
ActivityCompat.requestPermissions(this, new String[]{Manifest.permission.RECORD_AUDIO}, PERMISSIONS_REQUEST_RECORD_AUDIO);
|
ActivityCompat.requestPermissions(this, new String[]{Manifest.permission.RECORD_AUDIO}, PERMISSIONS_REQUEST_RECORD_AUDIO);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -238,8 +241,12 @@ private static AssistantActivity instance;
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onRequestPermissionsResult(int requestCode, String[] permissions, int[] grantResults) {
|
public void onRequestPermissionsResult(int requestCode, String[] permissions, int[] grantResults) {
|
||||||
|
for (int i = 0; i < permissions.length; i++) {
|
||||||
|
Log.i("[Permission] " + permissions[i] + " is " + (grantResults[i] == PackageManager.PERMISSION_GRANTED ? "granted" : "denied"));
|
||||||
|
}
|
||||||
|
|
||||||
if (requestCode == PERMISSIONS_REQUEST_RECORD_AUDIO) {
|
if (requestCode == PERMISSIONS_REQUEST_RECORD_AUDIO) {
|
||||||
if (getPackageManager().checkPermission(Manifest.permission.RECORD_AUDIO, getPackageName()) == PackageManager.PERMISSION_GRANTED) {
|
if (grantResults[0] == PackageManager.PERMISSION_GRANTED) {
|
||||||
launchEchoCancellerCalibration(true);
|
launchEchoCancellerCalibration(true);
|
||||||
} else {
|
} else {
|
||||||
success();
|
success();
|
||||||
|
|
Loading…
Reference in a new issue