Ask for camera permission when trying to pick a picture when editing a contact image or sending a file via chat

This commit is contained in:
Sylvain Berfini 2016-06-07 15:39:56 +02:00
parent 290a22a934
commit 2cda8ad43e
4 changed files with 28 additions and 6 deletions

View file

@ -54,7 +54,7 @@ public class CallIncomingActivity extends Activity implements LinphoneSliderTrig
private LinphoneCoreListenerBase mListener;
private LinearLayout acceptUnlock;
private LinearLayout declineUnlock;
private boolean isActive;
private boolean isScreenActive, alreadyAcceptedOrDeniedCall;
private float answerX;
private float declineX;
@ -87,9 +87,9 @@ public class CallIncomingActivity extends Activity implements LinphoneSliderTrig
PowerManager pm = (PowerManager) getSystemService(Context.POWER_SERVICE);
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT_WATCH) {
isActive = pm.isInteractive();
isScreenActive = pm.isInteractive();
} else {
isActive = pm.isScreenOn();
isScreenActive = pm.isScreenOn();
}
final int screenWidth = getResources().getDisplayMetrics().widthPixels;
@ -102,7 +102,7 @@ public class CallIncomingActivity extends Activity implements LinphoneSliderTrig
accept.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if(isActive) {
if(isScreenActive) {
answer();
} else {
decline.setVisibility(View.GONE);
@ -111,7 +111,7 @@ public class CallIncomingActivity extends Activity implements LinphoneSliderTrig
}
});
if(!isActive) {
if(!isScreenActive) {
accept.setOnTouchListener(new View.OnTouchListener() {
@Override
public boolean onTouch(View view, MotionEvent motionEvent) {
@ -177,7 +177,7 @@ public class CallIncomingActivity extends Activity implements LinphoneSliderTrig
decline.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if(isActive) {
if(isScreenActive) {
decline();
} else {
accept.setVisibility(View.GONE);
@ -215,6 +215,9 @@ public class CallIncomingActivity extends Activity implements LinphoneSliderTrig
if (lc != null) {
lc.addListener(mListener);
}
alreadyAcceptedOrDeniedCall = false;
mCall = null;
// Only one call ringing at a time is allowed
if (LinphoneManager.getLcIfManagerNotDestroyedOrNull() != null) {
@ -267,11 +270,21 @@ public class CallIncomingActivity extends Activity implements LinphoneSliderTrig
}
private void decline() {
if (alreadyAcceptedOrDeniedCall) {
return;
}
alreadyAcceptedOrDeniedCall = true;
LinphoneManager.getLc().terminateCall(mCall);
finish();
}
private void answer() {
if (alreadyAcceptedOrDeniedCall) {
return;
}
alreadyAcceptedOrDeniedCall = true;
LinphoneCallParams params = LinphoneManager.getLc().createCallParams(mCall);
boolean isLowBandwidthConnection = !LinphoneUtils.isHighBandwidthConnection(LinphoneService.instance().getApplicationContext());

View file

@ -192,6 +192,7 @@ public class ChatFragment extends Fragment implements OnClickListener, LinphoneC
@Override
public void onClick(View v) {
pickImage();
LinphoneActivity.instance().checkAndRequestCameraPermission();
}
});
//registerForContextMenu(sendImage);

View file

@ -250,6 +250,7 @@ public class ContactEditorFragment extends Fragment {
@Override
public void onClick(View view) {
pickImage();
LinphoneActivity.instance().checkAndRequestCameraPermission();
}
});

View file

@ -101,6 +101,7 @@ public class LinphoneActivity extends Activity implements OnClickListener, Conta
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_CAMERA = 205;
private static LinphoneActivity instance;
@ -1149,6 +1150,12 @@ public class LinphoneActivity extends Activity implements OnClickListener, Conta
checkAndRequestPermission(Manifest.permission.WRITE_EXTERNAL_STORAGE, PERMISSIONS_REQUEST_EXTERNAL_FILE_STORAGE);
}
}
public void checkAndRequestCameraPermission() {
if (getPackageManager().checkPermission(Manifest.permission.CAMERA, getPackageName()) != PackageManager.PERMISSION_GRANTED) {
checkAndRequestPermission(Manifest.permission.CAMERA, PERMISSIONS_REQUEST_CAMERA);
}
}
public void checkAndRequestPermission(String permission, int result) {
if (getPackageManager().checkPermission(permission, getPackageName()) != PackageManager.PERMISSION_GRANTED) {