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();
+ }
+}