package com.example.pdfscanner;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.annotation.RequiresApi;
import androidx.appcompat.app.AppCompatActivity;
import androidx.core.app.ActivityCompat;
import androidx.core.content.ContextCompat;
import androidx.core.content.PackageManagerCompat;
import androidx.recyclerview.widget.RecyclerView;
import android.Manifest;
import android.content.Context;
import android.content.ContextWrapper;
import android.content.Intent;
import android.content.pm.PackageManager;
import android.database.Cursor;
import android.net.Uri;
import android.os.Build;
import android.os.Bundle;
import android.os.Environment;
import android.provider.MediaStore;
import android.util.Log;
import android.view.View;
import android.widget.Button;
import android.widget.ImageView;
import android.widget.ProgressBar;
import android.widget.TextView;
import android.widget.Toast;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
public class MainActivity extends AppCompatActivity {
private final static int REQUEST_CODE=100;
private final static int PERMISSION_REQUEST_CODE=7;
Button convert, upload,camera;
ImageView img;
TextView title;
ProgressBar progressBar;
RecyclerView recyclerView;
String folderPath=Environment.getDataDirectory().getAbsolutePath()
+"/storage/emulated/0Pdf Scanner";
File directory ;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
askPermission();
title=findViewById(R.id.fileName);
convert=findViewById(R.id.converter_tool_convert);
camera=findViewById(R.id.converter_tool_camera);
upload=findViewById(R.id.converter_tool_upload);
img=findViewById(R.id.converter_tool_imageView);
progressBar=findViewById(R.id.progressbar);
recyclerView=findViewById(R.id.recyclerView);
directory = new File(Environment.getExternalStorageDirectory(), "Pdf Scanner");
if(!directory.exists()) {
Toast.makeText(getApplicationContext(),"Directory does not exist, create it",
Toast.LENGTH_LONG).show();
}
camera.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
if (directory.exists()) {
progressBar.setVisibility(View.VISIBLE);
Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
startActivityForResult(intent, REQUEST_CODE);
}else {
progressBar.setVisibility(View.GONE);
Toast.makeText(MainActivity.this, "Try Again", Toast.LENGTH_SHORT).show();;
createFolder();
}
}
});
upload.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
if(directory.exists()){
progressBar.setVisibility(View.VISIBLE);
Intent intent=new Intent(Intent.ACTION_PICK);
startActivityForResult(intent, REQUEST_CODE);
}else
{
progressBar.setVisibility(View.GONE);
Toast.makeText(MainActivity.this, "Try Agian", Toast.LENGTH_SHORT).show();
createFolder();
}
}
});
}
@RequiresApi(api = Build.VERSION_CODES.O)
@Override
protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {
super.onActivityResult(requestCode, resultCode, data);
progressBar.setVisibility(View.GONE);
if(data!=null)
{
Uri selectedImg=data.getData();
String[] filePathColumn={MediaStore.Images.Media.DATA, MediaStore.Images.Media.DISPLAY_NAME};
Cursor cursor=getContentResolver().query(selectedImg,filePathColumn,null,null);
cursor.moveToFirst();
int filePath=cursor.getColumnIndex(filePathColumn[0]);
int fileName=cursor.getColumnIndex(filePathColumn[1]);
String path=cursor.getString(filePath);
String name=cursor.getString(fileName);
cursor.close();
img.setImageURI(Uri.parse(path));
title.setText(name);
}
else{
Toast.makeText(this, "Select a image", Toast.LENGTH_SHORT).show();
}
}
private void askPermission() {
if(ContextCompat.checkSelfPermission(this, Manifest.permission.WRITE_EXTERNAL_STORAGE)
+ContextCompat.checkSelfPermission(this,Manifest.permission.CAMERA)!= PackageManager.PERMISSION_GRANTED){
ActivityCompat.requestPermissions(this,
new String[]{Manifest.permission.WRITE_EXTERNAL_STORAGE,
Manifest.permission.CAMERA},REQUEST_CODE);
}
}
@Override
public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
super.onRequestPermissionsResult(requestCode, permissions, grantResults);
if(requestCode==REQUEST_CODE){
createFolder();
}
}
private void createFolder() {
File folder=new File(folderPath);
if(!folder.exists()){
Toast.makeText(this, "Created", Toast.LENGTH_SHORT).show();
try {
folder.createNewFile();
} catch (IOException e) {
e.printStackTrace();
}
folder.mkdir();
}
directory.mkdirs();
}
}
I have Used this code for creating a directory in storage and i also gave all the user permission in manifest file
is there any way/ is it allowed to create folders in Internal Memory in Android. Example :
String folderPath=Environment.getDataDirectory().getAbsolutePath()
+"/storage/emulated/0Pdf Scanner";
File directory ;
directory = new File(Environment.getExternalStorageDirectory(), "Pdf Scanner");
private void createFolder() {
File folder=new File(folderPath);
if(!folder.exists()){
Toast.makeText(this, "Created", Toast.LENGTH_SHORT).show();
try {
folder.createNewFile();
} catch (IOException e) {
e.printStackTrace();
}
folder.mkdir();
}
directory.mkdirs();
}
I tried this and still I am not able to create a folder "Pdf Scanner" in an internal memory of phone
Please help me out in this so that it would be easier to create a folder in storage