Skip to content

Commit 8b4412c

Browse files
committed
Ask for camera permissions for qr code capturing
If android version allows it.
1 parent 140f438 commit 8b4412c

File tree

1 file changed

+41
-4
lines changed

1 file changed

+41
-4
lines changed

app/src/main/java/org/docspell/docspellshare/activity/AddUrlActivity.java

Lines changed: 41 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,21 +1,24 @@
11
package org.docspell.docspellshare.activity;
22

3+
import android.Manifest;
34
import android.content.Intent;
5+
import android.content.pm.PackageManager;
6+
import android.os.Build;
47
import android.os.Bundle;
58
import android.view.View;
69
import android.widget.EditText;
7-
10+
import androidx.annotation.NonNull;
811
import androidx.annotation.Nullable;
912
import androidx.appcompat.app.AppCompatActivity;
10-
13+
import androidx.core.content.ContextCompat;
1114
import com.google.android.material.snackbar.Snackbar;
12-
1315
import org.docspell.docspellshare.R;
1416
import org.docspell.docspellshare.data.UrlItem;
1517
import org.docspell.docspellshare.util.Strings;
1618

1719
public class AddUrlActivity extends AppCompatActivity {
1820
private static final int GET_QR_CODE = 1;
21+
private static final int CAMERA_PERM_REQUEST_CODE = 2;
1922

2023
public static final String URL_ITEM_EXTRA = "extraUrlItem";
2124

@@ -63,8 +66,42 @@ protected void onActivityResult(int requestCode, int resultCode, @Nullable Inten
6366
}
6467
}
6568

66-
public void runQrCode(View view) {
69+
private void showCameraRequiredMessage() {
70+
View view = findViewById(R.id.addUrlLayout);
71+
Snackbar.make(view, "Camera permission is required to capture QR codes.", Snackbar.LENGTH_LONG)
72+
.setAction("Action", null)
73+
.show();
74+
}
75+
76+
private void captureQRCodeActivity() {
6777
Intent intent = new Intent(this, QrCodeActivity.class);
6878
startActivityForResult(intent, GET_QR_CODE);
6979
}
80+
81+
@Override
82+
public void onRequestPermissionsResult(
83+
int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
84+
super.onRequestPermissionsResult(requestCode, permissions, grantResults);
85+
86+
if (requestCode == CAMERA_PERM_REQUEST_CODE) {
87+
if (grantResults.length > 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED) {
88+
captureQRCodeActivity();
89+
} else {
90+
showCameraRequiredMessage();
91+
}
92+
}
93+
}
94+
95+
public void runQrCode(View view) {
96+
if (ContextCompat.checkSelfPermission(getApplicationContext(), Manifest.permission.CAMERA)
97+
== PackageManager.PERMISSION_GRANTED) {
98+
captureQRCodeActivity();
99+
} else {
100+
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
101+
requestPermissions(new String[] {Manifest.permission.CAMERA}, CAMERA_PERM_REQUEST_CODE);
102+
} else {
103+
showCameraRequiredMessage();
104+
}
105+
}
106+
}
70107
}

0 commit comments

Comments
 (0)