안녕하세요.
마시멜로를 지원하기 위해서 권한획득을 하려 했습니다.
private void checkPermission()
{
if(Build.VERSION.SDK_INT >= 23)
{
if(ContextCompat.checkSelfPermission(this, Manifest.permission.WRITE_EXTERNAL_STORAGE) != PackageManager.PERMISSION_GRANTED ||
ContextCompat.checkSelfPermission(this, Manifest.permission.READ_EXTERNAL_STORAGE) != PackageManager.PERMISSION_GRANTED)
{
if(ActivityCompat.shouldShowRequestPermissionRationale(this, Manifest.permission.WRITE_EXTERNAL_STORAGE))
{
requestPermissions(new String[]{Manifest.permission.WRITE_EXTERNAL_STORAGE, Manifest.permission.READ_EXTERNAL_STORAGE}, Constant.REQUEST_CODE_APP_PERMISSION_STORAGE);
}
else
{
requestPermissions(new String[]{Manifest.permission.WRITE_EXTERNAL_STORAGE, Manifest.permission.READ_EXTERNAL_STORAGE}, Constant.REQUEST_CODE_APP_PERMISSION_STORAGE);
}
}
else
{
defaultFolderCheck();
curFolderFiles();
permissionChecker = true;
}
}
else
{
defaultFolderCheck();
curFolderFiles();
permissionChecker = true;
}
}
권한획득은 잘 됩니다.
그런데 문제는 권한획득 후에 "어플 재시작"을 한번 해야 권한이 적용됩니다.
private void curFolderFiles()
{
if(permissionChecker)
{
File file = new File(curFolderURL);
File files[] = file.listFiles(new FileFilter() {
@Override
public boolean accept(File pathname) {
return pathname.getName().endsWith(Constant.FILE_EXTENSION);
}
});
curFolderFileList.clear();
if(files != null)
for(int i = 0; i < files.length; i++)
curFolderFileList.add(new TextFile(files[i], getResources().getString(R.string.file_noname), new SimpleDateFormat(getResources().getString(R.string.file_dateformat))));
curFileAdapter = new TextFileAdaptor(this, curFolderFileList);
curFolderGridView.setAdapter(curFileAdapter);
curFolderGridView.setOnItemClickListener(clickListener);
curFolderGridView.setOnItemLongClickListener(longClickListener);
}
}
왜 안되나 싶어서 여기저기 Log를 걸어서 확인해보니
File file = new File(curFolderURL); 에서 "이게 파일이고 폴더이다"까지는 작동을 하는데
이 file의 fileList에 접근이 안됩니다.
그런데 어플을 재부팅하면 또 이게 먹힙니다.
왜그럴까요..ㅠㅠ
자문 자답입니다.
제가 AVD를 이용한 테스트가 아니라 일반폰으로 하다보니 특정환경에서 오류가 난듯합니다.
포팅된 CM13에서 오류가 났는데, 다른 사람이 포팅한 다른 CM13을 사용하니 잘됩니다.
결국은 롬의 문제인듯 싶습니다.