|
日時: 2017/06/10 14:20
名前: lightbox
|
日時: 2017/06/10 14:20 名前: lightbox
拡張子:
package com.example.lightbox.permission;
import android.content.pm.PackageManager;
import android.support.v4.app.ActivityCompat;
import android.support.v7.app.AppCompatActivity;
import android.util.Log;
import java.util.ArrayList;
public class CheckMyPermission {
private ArrayList<MyPermission> myPermission_list;
private AppCompatActivity context;
public CheckMyPermission(AppCompatActivity context, ArrayList<MyPermission> myPermission_list) {
this.myPermission_list = myPermission_list;
this.context = context;
Log.i("lightbox", "インスタンス作成");
}
public boolean checkPermission( int requestCode, int[] grantResults ) {
boolean result = false;
for( MyPermission myPermission : myPermission_list) {
if ( myPermission.getPermissionId() == requestCode ) {
if (grantResults[0] == PackageManager.PERMISSION_GRANTED) {
myPermission.setFlg(true);
}
}
}
int resultCounter = 0;
for( MyPermission myPermission : myPermission_list) {
if ( !myPermission.getFlg() ) {
if ( myPermission.getRequestCount() > 0 ) {
break;
}
ActivityCompat.requestPermissions(context,
new String[]{myPermission.getPermissionType()}, myPermission.getPermissionId());
myPermission.setRequestCount(myPermission.getRequestCount()+1);
break;
}
else {
resultCounter++;
}
}
if ( resultCounter == myPermission_list.size() ) {
result = true;
}
return result;
}
public boolean checkPermission(){
boolean result = false;
int initCounter = 0;
for( MyPermission myPermission : myPermission_list) {
if (ActivityCompat.checkSelfPermission(context, myPermission.getPermissionType())== PackageManager.PERMISSION_GRANTED){
initCounter++;
myPermission.setFlg(true);
}
}
if ( initCounter == myPermission_list.size() ) {
Log.i("lightbox", "既に許可済み/許可数:" + initCounter);
result = true;
}
else {
Log.i("lightbox", "許可数:" + initCounter);
for( MyPermission myPermission : myPermission_list) {
if ( !myPermission.getFlg() ) {
Log.i("lightbox", "リクエスト");
// 最初に許可されていないパーミッション用のダイアログを表示する
ActivityCompat.requestPermissions(context,
new String[]{myPermission.getPermissionType()}, myPermission.getPermissionId());
myPermission.setRequestCount(myPermission.getRequestCount()+1);
// 一つだけ処理する
break;
}
}
}
return result;
}
}
|