[tests][android] added android O permission prompts
This commit is contained in:
parent
46d51ef5ce
commit
86121969de
|
@ -1,9 +1,24 @@
|
||||||
package com.reactnativefirebasedemo;
|
package com.reactnativefirebasedemo;
|
||||||
|
|
||||||
|
import android.content.Intent;
|
||||||
|
import android.content.pm.PackageManager;
|
||||||
|
import android.net.Uri;
|
||||||
|
import android.os.Build;
|
||||||
|
import android.os.Bundle;
|
||||||
|
import android.provider.Settings;
|
||||||
|
|
||||||
import com.facebook.react.ReactActivity;
|
import com.facebook.react.ReactActivity;
|
||||||
|
|
||||||
public class MainActivity extends ReactActivity {
|
public class MainActivity extends ReactActivity {
|
||||||
|
|
||||||
|
public static final int PERMISSION_REQ_CODE = 1234;
|
||||||
|
public static final int OVERLAY_PERMISSION_REQ_CODE = 1235;
|
||||||
|
|
||||||
|
String[] perms = {
|
||||||
|
"android.permission.READ_EXTERNAL_STORAGE",
|
||||||
|
"android.permission.WRITE_EXTERNAL_STORAGE"
|
||||||
|
};
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Returns the name of the main component registered from JavaScript.
|
* Returns the name of the main component registered from JavaScript.
|
||||||
* This is used to schedule rendering of the component.
|
* This is used to schedule rendering of the component.
|
||||||
|
@ -12,4 +27,54 @@ public class MainActivity extends ReactActivity {
|
||||||
protected String getMainComponentName() {
|
protected String getMainComponentName() {
|
||||||
return "ReactNativeFirebaseDemo";
|
return "ReactNativeFirebaseDemo";
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onCreate(Bundle savedInstanceState) {
|
||||||
|
super.onCreate(savedInstanceState);
|
||||||
|
checkWindowPerms();
|
||||||
|
}
|
||||||
|
|
||||||
|
public void checkWindowPerms() {
|
||||||
|
// Checking if device version > 22 and we need to use new permission model
|
||||||
|
if (Build.VERSION.SDK_INT > Build.VERSION_CODES.LOLLIPOP_MR1) {
|
||||||
|
// Checking if we can draw window overlay
|
||||||
|
if (!Settings.canDrawOverlays(this)) {
|
||||||
|
// Requesting permission for window overlay(needed for all react-native apps)
|
||||||
|
Intent intent = new Intent(Settings.ACTION_MANAGE_OVERLAY_PERMISSION,
|
||||||
|
Uri.parse("package:" + getPackageName()));
|
||||||
|
startActivityForResult(intent, OVERLAY_PERMISSION_REQ_CODE);
|
||||||
|
}
|
||||||
|
for (String perm : perms) {
|
||||||
|
// Checking each permission and if denied then requesting permissions
|
||||||
|
if (checkSelfPermission(perm) == PackageManager.PERMISSION_DENIED) {
|
||||||
|
requestPermissions(perms, PERMISSION_REQ_CODE);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Window overlay permission intent result
|
||||||
|
@Override
|
||||||
|
public void onActivityResult(int requestCode, int resultCode, Intent data) {
|
||||||
|
super.onActivityResult(requestCode, resultCode, data);
|
||||||
|
if (requestCode == OVERLAY_PERMISSION_REQ_CODE) {
|
||||||
|
checkWindowPerms();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Permission results
|
||||||
|
@Override
|
||||||
|
public void onRequestPermissionsResult(int permsRequestCode, String[] permissions, int[] grantResults) {
|
||||||
|
switch (permsRequestCode) {
|
||||||
|
case PERMISSION_REQ_CODE:
|
||||||
|
// example how to get result of permissions requests (there can be more then one permission dialog)
|
||||||
|
// boolean readAccepted = grantResults[0]==PackageManager.PERMISSION_GRANTED;
|
||||||
|
// boolean writeAccepted = grantResults[1]==PackageManager.PERMISSION_GRANTED;
|
||||||
|
// checking permissions to prevent situation when user denied some permission
|
||||||
|
checkWindowPerms();
|
||||||
|
break;
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue