diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 9f22621..fb3135a 100755 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -17,28 +17,47 @@ package="com.googlecreativelab.drawar"> - - + + + - + + + - - + + + + + + \ No newline at end of file diff --git a/app/src/main/java/com/googlecreativelab/drawar/DrawAR.java b/app/src/main/java/com/googlecreativelab/drawar/DrawAR.java index 165620f..6f32957 100755 --- a/app/src/main/java/com/googlecreativelab/drawar/DrawAR.java +++ b/app/src/main/java/com/googlecreativelab/drawar/DrawAR.java @@ -289,13 +289,6 @@ protected void onResume() { break; } - // ARCore requires camera permissions to operate. If we did not yet obtain runtime - // permission on Android M and above, now is a good time to ask the user for it. - if (!PermissionHelper.hasCameraPermission(this)) { - PermissionHelper.requestCameraPermission(this); - return; - } - mSession = new Session(/* context= */ this); } catch (UnavailableArcoreNotInstalledException | UnavailableUserDeclinedInstallationException e) { @@ -356,16 +349,6 @@ public void onPause() { mScreenWidth = displayMetrics.widthPixels; } - - @Override - public void onRequestPermissionsResult(int requestCode, String[] permissions, int[] results) { - if (!PermissionHelper.hasCameraPermission(this)) { - Toast.makeText(this, - "Camera permission is needed to run this application", Toast.LENGTH_LONG).show(); - finish(); - } - } - @Override public void onWindowFocusChanged(boolean hasFocus) { super.onWindowFocusChanged(hasFocus); diff --git a/app/src/main/java/com/googlecreativelab/drawar/FakeMainActivity.java b/app/src/main/java/com/googlecreativelab/drawar/FakeMainActivity.java new file mode 100644 index 0000000..c95a56e --- /dev/null +++ b/app/src/main/java/com/googlecreativelab/drawar/FakeMainActivity.java @@ -0,0 +1,38 @@ +package com.googlecreativelab.drawar; + +import android.content.Intent; +import android.os.Bundle; +import android.support.v7.app.AppCompatActivity; +import android.widget.Toast; + +// ARCore requires camera permissions to operate. We should request the permission before DrawAR because the ARCore's JNI_OnLoad need +// the permission. If don't request it before DrawAR, the app will crash on the first start. +public class FakeMainActivity extends AppCompatActivity { + + @Override + protected void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + if (!PermissionHelper.hasCameraPermission(this)) { + PermissionHelper.requestCameraPermission(this); + }else{ + startRealActivity(); + } + } + + @Override + public void onRequestPermissionsResult(int requestCode, String[] permissions, int[] results) { + if (!PermissionHelper.hasCameraPermission(this)) { + Toast.makeText(this, + "Camera permission is needed to run this application", Toast.LENGTH_LONG).show(); + finish(); + }else{ + startRealActivity(); + } + } + + private void startRealActivity(){ + Intent intent = new Intent(this,DrawAR.class); + startActivity(intent); + finish(); + } +}