diff --git a/.idea/deploymentTargetDropDown.xml b/.idea/deploymentTargetDropDown.xml new file mode 100644 index 0000000..18c3724 --- /dev/null +++ b/.idea/deploymentTargetDropDown.xml @@ -0,0 +1,17 @@ + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/misc.xml b/.idea/misc.xml index 4d5311c..500af69 100644 --- a/.idea/misc.xml +++ b/.idea/misc.xml @@ -86,6 +86,7 @@ + diff --git a/app/src/main/java/com/qtagger/Activity/Test/PhotographFragment.java b/app/src/main/java/com/qtagger/Activity/Test/PhotographFragment.java index 493fd1d..6342da6 100644 --- a/app/src/main/java/com/qtagger/Activity/Test/PhotographFragment.java +++ b/app/src/main/java/com/qtagger/Activity/Test/PhotographFragment.java @@ -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); } diff --git a/app/src/main/java/com/qtagger/Activity/TestSelectActivity.java b/app/src/main/java/com/qtagger/Activity/TestSelectActivity.java index 763356c..ae2e84b 100644 --- a/app/src/main/java/com/qtagger/Activity/TestSelectActivity.java +++ b/app/src/main/java/com/qtagger/Activity/TestSelectActivity.java @@ -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 activityResultPicture = registerForActivityResult(new ActivityResultContracts.StartActivityForResult(), new ActivityResultCallback() { @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); } }); diff --git a/app/src/main/java/com/qtagger/MainActivity.java b/app/src/main/java/com/qtagger/MainActivity.java index 2c71277..e7a1634 100644 --- a/app/src/main/java/com/qtagger/MainActivity.java +++ b/app/src/main/java/com/qtagger/MainActivity.java @@ -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 accountList; + ActivityResultLauncher activityResultPicture = registerForActivityResult(new ActivityResultContracts.StartActivityForResult(), new ActivityResultCallback() { + @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() { diff --git a/app/src/main/java/com/qtagger/util/CommonHelper.java b/app/src/main/java/com/qtagger/util/CommonHelper.java index 5e7c09f..f4f0188 100644 --- a/app/src/main/java/com/qtagger/util/CommonHelper.java +++ b/app/src/main/java/com/qtagger/util/CommonHelper.java @@ -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 activityResultPicture){ + boolean permission = CheckCameraPermission(activity); + + //권한이 있을떄만 실행 + if(permission) + { + activityResultPicture.launch(cameraIntent); + } + } + + + + } diff --git a/app/src/main/java/com/qtagger/util/DataManager.java b/app/src/main/java/com/qtagger/util/DataManager.java index 094f6ac..a40f005 100644 --- a/app/src/main/java/com/qtagger/util/DataManager.java +++ b/app/src/main/java/com/qtagger/util/DataManager.java @@ -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();