我不知道为什么,但我的运行时权限的代码不起作用。不出现弹出。进度条显示没有我接受权限。问题与运行时权限
谁能帮帮我?
THNAKS提前每个人!
我告诉你我的代码:!
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
// Inflate the custom_spinner_items for this fragment
View rootView = inflater.inflate(R.layout.fragment_four, container, false);
Button mButton = (Button) rootView.findViewById(R.id.cazzo);
mButton.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
if (hasPermissions()) {
// our app has permissions.
FiveFragment ff = new FiveFragment();
numeroTavolo = ff.showResultTavolo(v);
MyListFragment mlf = new MyListFragment();
/* try {
mlf.showResultTotale(v);
} catch (IOException e) {
e.printStackTrace();
}*/
string2 = mlf.showResultTotale2(v);
totalepizze = mlf.showResultTotale(v);
ThreeFragment tf = new ThreeFragment();
string4 = tf.showResult(v);
totalebibite = tf.showResult2(v);
processingDialog.show();
mProgressbarAsync = new MakePDF();
mProgressbarAsync.execute();
new MakePDF(getContext()).execute();
} else {
//our app doesn't have permissions, So i m requesting permissions.
requestPerms();
}
/* FiveFragment ff = new FiveFragment();
numeroTavolo = ff.showResultTavolo(v);
MyListFragment mlf = new MyListFragment();
*//* try {
mlf.showResultTotale(v);
} catch (IOException e) {
e.printStackTrace();
}*//*
string2 = mlf.showResultTotale2(v);
totalepizze = mlf.showResultTotale(v);
ThreeFragment tf = new ThreeFragment();
string4 = tf.showResult(v);
totalebibite = tf.showResult2(v);
*/
/* string4=tf.showResult(v);
totalebibite=tf.showResult2(v);*/
/* processingDialog.show();
mProgressbarAsync = new MakePDF();
mProgressbarAsync.execute();
new MakePDF(getContext()).execute();*/
}
});
TextView titolo2 = (TextView) rootView.findViewById(R.id.result2);
return rootView;
}
Code关于权限:
private void requestPerms(){
String[] permissions = new String[]{Manifest.permission.WRITE_EXTERNAL_STORAGE};
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M){
requestPermissions(permissions,PERMS_REQUEST_CODE);
}
}
private boolean hasPermissions(){
int res = 0;
//string array of permissions,
String[] permissions = new String[]{Manifest.permission.WRITE_EXTERNAL_STORAGE};
for (String perms : permissions){
res = checkCallingOrSelfPermission(getContext(),perms);
if (!(res == PackageManager.PERMISSION_GRANTED)){
return false;
}
}
return true;
}
@Override
public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
boolean allowed = true;
switch (requestCode){
case PERMS_REQUEST_CODE:
for (int res : grantResults){
// if user granted all permissions.
allowed = allowed && (res == PackageManager.PERMISSION_GRANTED);
}
break;
default:
// if user not granted permissions.
allowed = false;
break;
}
if (allowed){
//user granted all permissions we can perform our task.
//makeFolder();
FiveFragment ff = new FiveFragment();
numeroTavolo = ff.showResultTavolo(v);
MyListFragment mlf = new MyListFragment();
/* try {
mlf.showResultTotale(v);
} catch (IOException e) {
e.printStackTrace();
}*/
string2 = mlf.showResultTotale2(v);
totalepizze = mlf.showResultTotale(v);
ThreeFragment tf = new ThreeFragment();
string4 = tf.showResult(v);
totalebibite = tf.showResult2(v);
processingDialog.show();
mProgressbarAsync = new MakePDF();
mProgressbarAsync.execute();
new MakePDF(getContext()).execute();
}
else {
// we will give warning to user that they haven't granted permissions.
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
if (shouldShowRequestPermissionRationale(Manifest.permission.WRITE_EXTERNAL_STORAGE)){
Toast.makeText(getContext(), "Storage Permissions denied.", Toast.LENGTH_SHORT).show();
}
}
}
}
你的目标sdk是什么?您正在测试的设备或虚拟设备的api级别是什么? – Sufian
如果你想要一个简单易行的代码,你可以添加一个类 https://github.com/mptrista/PermissionHelper – toshkinl