Permissions 启动屏幕前的Android 6.0设置权限

Permissions 启动屏幕前的Android 6.0设置权限,permissions,splash-screen,android-6.0-marshmallow,Permissions,Splash Screen,Android 6.0 Marshmallow,嗨,我有一个从API 18到API 22运行良好的应用程序。 对于新的AndroidAPI23,我正在尝试设置我在清单上设置的检查权限。我在用德克斯特图书馆。现在,我希望启用权限的对话框设置显示在我的启动屏幕之前,当我单击对话框权限上的“确定”时,应用程序保持打开状态,并显示我的简介视图和主视图之后。 我已设置此代码,该代码在启动屏幕运行期间有效,当我为启用权限设置“ok”时,应用程序将关闭,而不是保持打开状态。 这是我的启动屏幕和dexter库代码: public class SplashSc

嗨,我有一个从API 18到API 22运行良好的应用程序。 对于新的AndroidAPI23,我正在尝试设置我在清单上设置的检查权限。我在用德克斯特图书馆。现在,我希望启用权限的对话框设置显示在我的启动屏幕之前,当我单击对话框权限上的“确定”时,应用程序保持打开状态,并显示我的简介视图和主视图之后。 我已设置此代码,该代码在启动屏幕运行期间有效,当我为启用权限设置“ok”时,应用程序将关闭,而不是保持打开状态。 这是我的启动屏幕和dexter库代码:

public class SplashScreen extends Activity {


//Set waktu lama splashscreen
private static int splashInterval = 3000;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    Fabric.with(this, new Answers());
    Dexter.initialize(getApplicationContext());
    requestWindowFeature(Window.FEATURE_NO_TITLE);
    getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,
            WindowManager.LayoutParams.FLAG_FULLSCREEN);
    setContentView(R.layout.splash_fragment);









    new Handler().postDelayed(new Runnable() {


        @Override
        public void run() {
            View v = findViewById(android.R.id.content);

            if (ActivityCompat.checkSelfPermission(getApplicationContext(),
                    android.Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager
                    .PERMISSION_GRANTED && ActivityCompat
                    .checkSelfPermission(getApplicationContext(),
                            android.Manifest.permission.ACCESS_COARSE_LOCATION) != PackageManager
                    .PERMISSION_GRANTED) {

                MultiplePermissionsListener snackbarMultiplePermissionsListener =
                        SnackbarOnAnyDeniedMultiplePermissionsListener.Builder
                                .with((ViewGroup) v.getRootView(),"")
                                .withOpenSettingsButton("Settings")
                                .withCallback(new Snackbar.Callback() {
                                    @Override
                                    public void onShown(Snackbar snackbar) {
                                        // Event handler for when the given Snackbar has been dismissed
                                    }
                                    @Override
                                    public void onDismissed(Snackbar snackbar, int event) {
                                        // Event handler for when the given Snackbar is visible
                                    }
                                })
                                .build();
                Dexter.checkPermissions(snackbarMultiplePermissionsListener, android.Manifest.permission.ACCESS_FINE_LOCATION, android.Manifest.permission.ACCESS_COARSE_LOCATION, android.Manifest.permission.ACCESS_NETWORK_STATE, android.Manifest.permission.GET_ACCOUNTS);
                return;


            }

            Intent i = new Intent(SplashScreen.this, MainActivity.class);
            startActivity(i);


            //jeda selesai Splashscreen
            this.finish();
        }

        private void finish() {
            // TODO Auto-generated method stub

        }
    }, splashInterval);

};
}

如何在启动屏幕前显示此对话框设置,并在单击“确定”启用权限后保持应用程序打开

谢谢

private void displayssplashscreen(){
new Handler().postDelayed(new Runnable()){
/*
*显示带有计时器的启动屏幕。当您
*想展示你的应用程序徽标/公司吗
*/
@凌驾
公开募捐{
意图i=新意图(SplashActivity.this、LoginActivity.class);
星触觉(i);
完成();
}
},溅出时间);
}
私有void setPermissionForM(){
字符串[]权限={
Manifest.permission.WRITE\u外部存储,
Manifest.permission.ACCESS\u位置,
Manifest.permission.ACCESS\u FINE\u位置,
舱单,许可,摄像机,
Manifest.permission.READ\u PHONE\u STATE};
如果(!utils.hasPermissions(此,PERMISSIONS)){
ActivityCompat.requestPermissions(此、权限、权限\全部);
}
}
@凌驾
public void onRequestPermissionsResult(int-requestCode,@NonNull-String[]permissions,@NonNull-int[]grantResults){
super.onRequestPermissionsResult(请求代码、权限、授权结果);
Map perms=new HashMap();
//首字母
perms.put(Manifest.permission.WRITE_外部_存储,PackageManager.permission_已授予);
perms.put(Manifest.permission.ACCESS\u位置,PackageManager.permission\u已授予);
perms.put(Manifest.permission.ACCESS\u FINE\u位置,PackageManager.permission\u已授予);
perms.put(Manifest.permission.CAMERA,PackageManager.permission_provided);
perms.put(Manifest.permission.READ_PHONE_状态,PackageManager.permission_已授予);
for(int i=0;i
private void displayssplashscreen(){
new Handler().postDelayed(new Runnable()){
/*
*显示带有计时器的启动屏幕。当您
*想展示你的应用程序徽标/公司吗
*/
@凌驾
公开募捐{
意图i=新意图(SplashActivity.this、LoginActivity.class);
星触觉(i);
完成();
}
},溅出时间);
}
私有void setPermissionForM(){
字符串[]权限={
Manifest.permission.WRITE\u外部存储,
Manifest.permission.ACCESS\u位置,
Manifest.permission.ACCESS\u FINE\u位置,
舱单,许可,摄像机,
Manifest.permission.READ\u PHONE\u STATE};
如果(!utils.hasPermissions(此,PERMISSIONS)){
ActivityCompat.requestPermissions(此、权限、权限\全部);
}
}
@凌驾
public void onRequestPermissionsResult(int-requestCode,@NonNull-String[]permissions,@NonNull-int[]grantResults){
super.onRequestPermissionsResult(请求代码、权限、授权结果);
Map perms=new HashMap();
//首字母
perms.put(Manifest.permission.WRITE_外部_存储,PackageManager.permission_已授予);
perms.put(Manifest.permission.ACCESS\u位置,PackageManager.permission\u已授予);
perms.put(Manifest.permission.ACCESS\u FINE\u位置,PackageManager.permission\u已授予);
perms.put(Manifest.permission.CAMERA,PackageManager.permission_provided);
perms.put(Manifest.permission.READ_PHONE_状态,PackageManager.permission_已授予);
for(int i=0;iprivate void displaySplashScreen() {
    new Handler().postDelayed(new Runnable() {

        /*
         * Showing splash screen with a timer. This will be useful when you
         * want to show case your app logo / company
         */

        @Override
        public void run() {
            Intent i = new Intent(SplashActivity.this, LoginActivity.class);
            startActivity(i);
            finish();
        }
    }, SPLASH_TIME_OUT);
}

private void setPermissionForM() {
    String[] PERMISSIONS = {
            Manifest.permission.WRITE_EXTERNAL_STORAGE,
            Manifest.permission.ACCESS_COARSE_LOCATION,
            Manifest.permission.ACCESS_FINE_LOCATION,
            Manifest.permission.CAMERA,
            Manifest.permission.READ_PHONE_STATE};

    if (!utils.hasPermissions(this, PERMISSIONS)) {
        ActivityCompat.requestPermissions(this, PERMISSIONS, PERMISSION_ALL);
    }
}

@Override
public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
    super.onRequestPermissionsResult(requestCode, permissions, grantResults);
            Map<String, Integer> perms = new HashMap<String, Integer>();
            // Initial
            perms.put(Manifest.permission.WRITE_EXTERNAL_STORAGE, PackageManager.PERMISSION_GRANTED);
            perms.put(Manifest.permission.ACCESS_COARSE_LOCATION, PackageManager.PERMISSION_GRANTED);
            perms.put(Manifest.permission.ACCESS_FINE_LOCATION, PackageManager.PERMISSION_GRANTED);
            perms.put(Manifest.permission.CAMERA, PackageManager.PERMISSION_GRANTED);
            perms.put(Manifest.permission.READ_PHONE_STATE, PackageManager.PERMISSION_GRANTED);
            for (int i = 0; i < permissions.length; i++)
                perms.put(permissions[i], grantResults[i]);
            if (perms.get(Manifest.permission.WRITE_EXTERNAL_STORAGE) == PackageManager.PERMISSION_GRANTED
                    && perms.get(Manifest.permission.ACCESS_COARSE_LOCATION) == PackageManager.PERMISSION_GRANTED
                    && perms.get(Manifest.permission.ACCESS_FINE_LOCATION) == PackageManager.PERMISSION_GRANTED
                    && perms.get(Manifest.permission.CAMERA) == PackageManager.PERMISSION_GRANTED
                    && perms.get(Manifest.permission.READ_PHONE_STATE) == PackageManager.PERMISSION_GRANTED) {
                // All Permissions Granted
                displaySplashScreen();
            } else {
                // Permission Denied
                Toast.makeText(SplashActivity.this, "Some Permission is Denied", Toast.LENGTH_SHORT)
                        .show();
            }

}