권한처리 기능 추가

This commit is contained in:
DESKTOP-1A3P75F\lee
2022-08-31 09:15:51 +09:00
parent 1ed10b75db
commit 7900f9799d
7 changed files with 103 additions and 28 deletions

View File

@@ -99,6 +99,8 @@ public class PhotographFragment extends Fragment {
pictureAdd.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
boolean permission = CommonHelper.CheckCameraPermission(getActivity());
activityResultPicture.launch(dataManager.cameraIntent);
}

View File

@@ -1,38 +1,28 @@
package com.qtagger.Activity;
import android.Manifest;
import android.app.Activity;
import android.content.Intent;
import android.content.pm.PackageManager;
import android.net.Uri;
import android.os.Bundle;
import android.view.View;
import androidx.activity.result.ActivityResult;
import androidx.activity.result.ActivityResultCallback;
import androidx.activity.result.ActivityResultLauncher;
import androidx.activity.result.contract.ActivityResultContracts;
import androidx.annotation.Nullable;
import androidx.appcompat.app.AppCompatActivity;
import androidx.core.app.ActivityCompat;
import androidx.core.content.FileProvider;
import android.Manifest;
import android.content.Intent;
import android.content.pm.PackageManager;
import android.content.pm.ResolveInfo;
import android.graphics.Bitmap;
import android.net.Uri;
import android.os.Bundle;
import android.os.Environment;
import android.provider.MediaStore;
import android.view.View;
import androidx.core.content.ContextCompat;
import com.qtagger.Data.TestEnum;
import com.qtagger.R;
import com.qtagger.util.CommonHelper;
import com.qtagger.util.DataManager;
import java.io.File;
import java.io.IOException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.List;
public class TestSelectActivity extends AppCompatActivity {
private DataManager dataManager = DataManager.getInstance();
private final DataManager dataManager = DataManager.getInstance();
private static final int REQUESTR_IMAGE_CAPTURE = 1;
private static final int SINGLE_PERMISSION = 1004;
@@ -40,6 +30,7 @@ public class TestSelectActivity extends AppCompatActivity {
private Uri photoUri;
ActivityResultLauncher<Intent> activityResultPicture = registerForActivityResult(new ActivityResultContracts.StartActivityForResult(), new ActivityResultCallback<ActivityResult>() {
@Override
public void onActivityResult(ActivityResult result) {
@@ -48,10 +39,12 @@ public class TestSelectActivity extends AppCompatActivity {
}
});
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_test_select);
Activity thisActivity = this;
findViewById(R.id.button_발생지특성검사).setOnClickListener(new View.OnClickListener() {
@@ -67,7 +60,7 @@ public class TestSelectActivity extends AppCompatActivity {
@Override
public void onClick(View v) {
dataManager.testEnum = TestEnum.예비검사;
activityResultPicture.launch(dataManager.cameraIntent);
CommonHelper.CallCamera( thisActivity,activityResultPicture);
}
});

View File

@@ -1,11 +1,9 @@
package com.qtagger;
import androidx.annotation.RequiresApi;
import androidx.appcompat.app.AppCompatActivity;
import androidx.room.Room;
import android.Manifest;
import android.content.Context;
import android.content.Intent;
import android.content.pm.PackageManager;
import android.net.ConnectivityManager;
import android.net.NetworkInfo;
import android.os.Build;
@@ -16,22 +14,43 @@ import android.widget.Button;
import android.widget.Spinner;
import android.widget.Toast;
import androidx.activity.result.ActivityResult;
import androidx.activity.result.ActivityResultCallback;
import androidx.activity.result.ActivityResultLauncher;
import androidx.activity.result.contract.ActivityResultContracts;
import androidx.annotation.RequiresApi;
import androidx.appcompat.app.AppCompatActivity;
import androidx.core.app.ActivityCompat;
import androidx.core.content.ContextCompat;
import androidx.room.Room;
import com.qtagger.Activity.AccountAdd;
import com.qtagger.Activity.AccountList;
import com.qtagger.Activity.NavigationActivity;
import com.qtagger.Activity.TestSelectActivity;
import com.qtagger.Database.Account;
import com.qtagger.Database.AppDatabase;
import com.qtagger.util.CommonHelper;
import com.qtagger.util.DataManager;
import java.util.List;
public class MainActivity extends AppCompatActivity {
private static final int REQUEST_CODE = 0;
private Spinner mSpinner;
private Button btnLogin;
private DataManager dataManager;
private List<Account> accountList;
ActivityResultLauncher<Intent> activityResultPicture = registerForActivityResult(new ActivityResultContracts.StartActivityForResult(), new ActivityResultCallback<ActivityResult>() {
@Override
public void onActivityResult(ActivityResult result) {
CommonHelper.CameraResult(result);
}
});
@RequiresApi(api = Build.VERSION_CODES.M)
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
@@ -39,7 +58,7 @@ public class MainActivity extends AppCompatActivity {
mSpinner = findViewById(R.id.spinner_account);
dataManager = DataManager.getInstance();
CommonHelper.CheckCameraPermission(this);
//테스트용도 나중에 삭제
findViewById(R.id.imageView).setOnClickListener(new View.OnClickListener() {

View File

@@ -2,11 +2,21 @@ package com.qtagger.util;
import static android.app.Activity.RESULT_OK;
import static com.qtagger.util.DataManager.CAMERA_PERMISSIONS_REQUEST_CODE;
import static com.qtagger.util.DataManager.cameraIntent;
import android.Manifest;
import android.app.Activity;
import android.content.Intent;
import android.content.pm.PackageManager;
import android.graphics.Bitmap;
import android.os.Bundle;
import android.util.TypedValue;
import androidx.activity.result.ActivityResult;
import androidx.activity.result.ActivityResultLauncher;
import androidx.core.app.ActivityCompat;
import androidx.core.content.ContextCompat;
public class CommonHelper {
@@ -19,4 +29,33 @@ public class CommonHelper {
}
return null;
}
public static boolean CheckCameraPermission(Activity activity_this)
{
int permissionCheck = ContextCompat.checkSelfPermission(activity_this,Manifest.permission.CAMERA);
if (permissionCheck == PackageManager.PERMISSION_DENIED) {
if (ActivityCompat.shouldShowRequestPermissionRationale(activity_this,Manifest.permission.CAMERA)) {
//권한 설명 필요
ActivityCompat.requestPermissions(activity_this,new String[] {Manifest.permission.CAMERA}, CAMERA_PERMISSIONS_REQUEST_CODE);
} else {
ActivityCompat.requestPermissions(activity_this,new String[] {Manifest.permission.CAMERA}, CAMERA_PERMISSIONS_REQUEST_CODE);
}
}
return permissionCheck==PackageManager.PERMISSION_GRANTED?true:false;
}
public static void CallCamera(Activity activity, ActivityResultLauncher<Intent> activityResultPicture){
boolean permission = CheckCameraPermission(activity);
//권한이 있을떄만 실행
if(permission)
{
activityResultPicture.launch(cameraIntent);
}
}
}

View File

@@ -2,6 +2,9 @@ package com.qtagger.util;
import static android.app.Activity.RESULT_OK;
import static com.qtagger.util.CommonHelper.CheckCameraPermission;
import android.app.Activity;
import android.content.Intent;
import android.provider.MediaStore;
@@ -19,8 +22,9 @@ public class DataManager {
public Account loginAccount;
public FragmentManager fragmentManager;
public TestEnum testEnum = TestEnum.선택안함;
public Intent cameraIntent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
public static TestEnum testEnum = TestEnum.선택안함;
public static Intent cameraIntent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
public static final int CAMERA_PERMISSIONS_REQUEST_CODE = 100;
private static class DataManagerHolder{
public static final DataManager INSTANCE = new DataManager();