Я хочу создать папку при щелчке по макету фотографии. И при щелчке макета созданная новая папка должна открываться, если она пуста, она должна показывать тост или должна открываться с изображениями. Для этого я создал новый файл, и я делаю проверку файлов, он бросает исключение нулевого указателя для массива файлов.Как создать папку во внешнем хранилище и проверить разрешение?
String path = Environment.getExternalStorageDirectory().toString();
File dir = new File(path,"/MeaVita");
File file1 = new File(Environment.getExternalStorageDirectory().getPath() + "/MeaVita");
File[] listFile = file1.listFiles();
photosLayout.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
checkFilePermissions();
if (!dir.isDirectory()) {
dir.mkdirs();
}
if (listFile.length == 0) {
Toast.makeText(MainActivity.this, "The folder is empty.", Toast.LENGTH_SHORT).show();
} else {
new MainActivity.SingleMediaScanner(MainActivity.this, listFile[0]);
}
}
});
методы
public class SingleMediaScanner implements MediaScannerConnection.MediaScannerConnectionClient {
private MediaScannerConnection mMs;
private File mFile;
public SingleMediaScanner(Context context, File f) {
mFile = f;
mMs = new MediaScannerConnection(context, this);
mMs.connect();
}
public void onMediaScannerConnected() {
mMs.scanFile(mFile.getAbsolutePath(), null);
}
public void onScanCompleted(String path, Uri uri) {
Intent intent = new Intent(Intent.ACTION_VIEW);
intent.setData(uri);
startActivity(intent);
mMs.disconnect();
}
}
private void checkFilePermissions() {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
int hasWriteExternalStoragePermission = checkSelfPermission(Manifest.permission.WRITE_EXTERNAL_STORAGE);
if (hasWriteExternalStoragePermission != PackageManager.PERMISSION_GRANTED) {
requestPermissions(new String[]{Manifest.permission.WRITE_EXTERNAL_STORAGE},
REQUEST_CODE_ASK_PERMISSIONS);
}
}
}
Вход:
FATAL EXCEPTION: main
Process: com.example.siddhi.meavita, PID: 15025
java.lang.NullPointerException: Attempt to get length of null array
at com.example.siddhi.meavita.Activities.MainActivity$2.onClick(MainActivity.java:119)
at android.view.View.performClick(View.java:5201)
EDIT:
photosLayout.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
String folder_main = "MeaVita";
File dir = new File(Environment.getExternalStorageDirectory(),folder_main);
checkFilePermissions();
if (!dir.exists()) {
dir.mkdirs();
}
File[] listFile = dir.listFiles();
if (listFile.length == 0) {
Toast.makeText(MainActivity.this, "The folder is empty.", Toast.LENGTH_SHORT).show();
} else {
new MainActivity.SingleMediaScanner(MainActivity.this, listFile[0]);
}
}
});
Этот код работает сейчас, но доза не просить разрешения, то и это создает Папка. Как?
Не получить то, что происходит неправильно помощь, пожалуйста ..
показать свой MainActivity.java onClick() код –
, пожалуйста, проверьте отредактированный вопрос. @SathishKumarJ – Sid