Create A folder in Internal memory of phone using Android studio

56 Views Asked by At
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

0

There are 0 best solutions below