多个权限后启动活动?android 6+ [英] Start the Activity After Multiple Permission?android 6+

查看:61
本文介绍了多个权限后启动活动?android 6+的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我已在启动画面上将此授予Req Multiple权限

I have Given this to Req Multiple permission at my splash screen

public class Main_MulPer extends Activity {

public static final int R_PERM = 321;

Context context = this;

public static boolean hasPermissions(Context context, String... permissions) {
    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M && context != null && permissions != null) {
        for (String permission : permissions) {
            if (ActivityCompat.checkSelfPermission(context, permission) != PackageManager.PERMISSION_GRANTED) {
                return false;
            }
        }
    }
    return true;
}

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.rcssa);


    int PERMISSION_ALL = 1;
    String[] PERMISSIONS = {Manifest.permission.CAMERA,
    Manifest.permission.READ_PHONE_STATE,
    Manifest.permission.INTERNET,
    Manifest.permission.ACCESS_NETWORK_STATE,
    Manifest.permission.ACCESS_WIFI_STATE,
    Manifest.permission.NFC,
    Manifest.permission.READ_EXTERNAL_STORAGE,
    Manifest.permission.WRITE_EXTERNAL_STORAGE,     
    };

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

        Main_MulPer.this.finish();
        Intent ss = new Intent(Main_MulPer.this, Main_acti.class);
        ss.setFlags(Intent.FLAG_ACTIVITY_REORDER_TO_FRONT);
        ss.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
        ss.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK);
        ss.setFlags(Intent.FLAG_ACTIVITY_NO_ANIMATION);
        startActivity(ss);

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

            new Handler().postDelayed(new Runnable() {
                @Override
                public void run() {
                    Main_MulPer.this.finish();
                    Intent i = new Intent(Main_MulPer.this, Splash_two.class);
                    startActivity(i);
                }
            }, 3000);

        }
    }

}

}

所以这里我的问题是,它一次要两个权限...

So here My problem is that Its Asking two Permission at a time...

如果我尝试允许他们转移到另一个活动...,那么我给了类似的3个活动,每个活动有2个权限.

If I try to grant them its moving to another Activity... So I have Given Similar 3 activities with 2 Permission on Each..

但是由于Handler的启用,新的活动.. 然后我删除了延迟处理程序...现在打开上一个活动...直接...

But Due to Handler its Opening new activities.. Then I removed Delay Handler... Now It opening Last activity... Directly...

任何人只能在获得所有权限后建议我如何启动主要活动... 未经许可,应退出应用...请为此提供帮助

Can Any one Suggest Me How to Start The Main Activity after All Permissions only... Without permission It should Exit app... Please Help me on this

更新

装有多个权限,我已将3个活动分别分割为两个活动...但是在这里,它应在获得许可后转到下一个活动,但是每当缺少前两个活动许可时,它将转到最后一个活动 所以我需要退出应用程序并给他们...

Insted of Multiple permissions I have Splited the 3 activities with two permission each... But here It should Go to next activity after permission But its Going to last activity every time first two activity permission are missing So I need to exit app and give them...

我需要做的就是,未经允许请勿移动到下一个屏幕

在获得许可后,任何人都不能建议我....

Can any one suggest me after permission only move to next activity....

推荐答案

尝试一下,

 public class Main_nPRC extends Activity {

public static final String MainPP_SP = "MainPP_data";
public static final int R_PERM = 2822;
private static final int REQUEST= 112;

Context mContext = this;


@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.rcssa);

    SharedPreferences settings = getSharedPreferences(MainPP_SP, 0);
    HashMap<String, String> map = (HashMap<String, String>) settings.getAll();

    if (Build.VERSION.SDK_INT >= 23) {
        Log.d("TAG","@@@ IN IF Build.VERSION.SDK_INT >= 23");
        String[] PERMISSIONS = {android.Manifest.permission.CAMERA,
                android.Manifest.permission.READ_PHONE_STATE,
                android.Manifest.permission.INTERNET,
                android.Manifest.permission.ACCESS_NETWORK_STATE,
                android.Manifest.permission.ACCESS_WIFI_STATE,
                android. Manifest.permission.NFC,
                android.Manifest.permission.READ_EXTERNAL_STORAGE,
                android.Manifest.permission.WRITE_EXTERNAL_STORAGE,
        };


        if (!hasPermissions(mContext, PERMISSIONS)) {
            Log.d("TAG","@@@ IN IF hasPermissions");
            ActivityCompat.requestPermissions((Activity) mContext, PERMISSIONS, REQUEST );
        } else {
            Log.d("TAG","@@@ IN ELSE hasPermissions");
            callNextActivity();
        }
    } else {
        Log.d("TAG","@@@ IN ELSE  Build.VERSION.SDK_INT >= 23");
        callNextActivity();
    }

}

@Override
public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
    super.onRequestPermissionsResult(requestCode, permissions, grantResults);
    switch (requestCode) {
        case REQUEST: {
            if (grantResults.length > 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED) {
                Log.d("TAG","@@@ PERMISSIONS grant");
                callNextActivity();
            } else {
                Log.d("TAG","@@@ PERMISSIONS Denied");
                Toast.makeText(mContext, "PERMISSIONS Denied", Toast.LENGTH_LONG).show();
            }
        }
    }
}

private static boolean hasPermissions(Context context, String... permissions) {
    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M && context != null && permissions != null) {
        for (String permission : permissions) {
            if (ActivityCompat.checkSelfPermission(context, permission) != PackageManager.PERMISSION_GRANTED) {
                return false;
            }
        }
    }
    return true;
}

public void callNextActivity()
{
    Intent ss = new Intent(Main_nPRC.this, NMainSS.class);
    ss.setFlags(Intent.FLAG_ACTIVITY_REORDER_TO_FRONT);
    ss.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
    ss.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK);
    ss.setFlags(Intent.FLAG_ACTIVITY_NO_ANIMATION);
    startActivity(ss);
    finish();
}



@Override
public void onBackPressed() {

    AlertDialog.Builder alertDialogBuilder = new AlertDialog.Builder(this);
    alertDialogBuilder.setTitle("ⓘ Exit ! " + getString(R.string.app_name));
    alertDialogBuilder
            .setMessage(Html.fromHtml("<p style='text-align:center;'>Please Fill the required details</p><h3 style='text-align:center;'>Click Yes to Exit !</h4>"))
            .setCancelable(false)
            .setPositiveButton("Yes",
                    new DialogInterface.OnClickListener() {
                        public void onClick(DialogInterface dialog, int id) {
                            moveTaskToBack(true);
                            android.os.Process.killProcess(android.os.Process.myPid());
                            System.exit(0);

                        }
                    })

            .setNegativeButton("No", new DialogInterface.OnClickListener() {
                public void onClick(DialogInterface dialog, int id) {

                    dialog.cancel();
                }
            });

    AlertDialog alertDialog = alertDialogBuilder.create();
    alertDialog.show();

}

}

这篇关于多个权限后启动活动?android 6+的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆