Vizualizar PDF android

Ola estou tentando ler um arquivo PDF que esta gravado na pasta raiz de um dispositivo android, mas nao esta abrindo, alguem consegue me ajudar? Segue meu codigo:

public void visualizarPedido(){

	@SuppressWarnings("deprecation")
	File pdfFile = new File(Environment.getExternalStorageDirectory().getAbsolutePath() + "/" + "pedido.pdf"); 
    if(pdfFile.exists()) 
    {
    	Intent pdfIntent = new Intent();
    	pdfIntent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION);	
		Path = Uri.fromFile(pdfFile);
        pdfIntent.setType("application/pdf");
        pdfIntent.setData(Path);
        pdfIntent.putExtra("", Path);
        pdfIntent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);

        try
        {
            startActivity(pdfIntent); 
            VisualizarPedido.super.onBackPressed();
                     
        }
        catch(ActivityNotFoundException e)
        {
        	
        	final AlertDialog.Builder b = new AlertDialog.Builder(this);
    		alert = b.setCancelable(false).setPositiveButton("OK", new OnClickListener() {
    			@Override
    			public void onClick(DialogInterface dialog, int which) {
    				alert.dismiss();
    				
    				VisualizarPedido.super.onBackPressed();

    			}
    		}).setMessage("Nenhum Programa para Visualizar Arquivo em PDF Instalado!").create();

    		alert.show();
        }
        catch(Exception e) {
        	Log.e("ERRO", e.getMessage());
        }
    }
}

ta dando erro?

Sim em versoes mais recentes do android ele nao abre o arquivo pdf

mas gera erro?? Se sim, qual?

android.os.FileUriExposedException: file:///storage/emulated/0/pedido.pdf exposed beyond app through Intent.getData()
esse é o erro gerado.

Minha classe esta assim agora:
public void visualizarPedido(){

    	int SDK_INT = android.os.Build.VERSION.SDK_INT;
    	Intent pdfIntent = new Intent();
        String caminhoPdf = getExternalFilesDir(null) + "/" + System.currentTimeMillis() + "pedido.pdf";
        File pdf = new File(caminhoPdf);
        Uri pdfURI = FileProvider.getUriForFile(VisualizarPedido.this, BuildConfig.APPLICATION_ID + ".provider", pdf);
        pdfIntent.putExtra(MediaStore.EXTRA_OUTPUT, pdfURI);
       

        try
        {
            startActivity(pdfIntent); 
            VisualizarPedido.super.onBackPressed();
                     
        }
        catch(ActivityNotFoundException e)
        {
        	
        	final AlertDialog.Builder b = new AlertDialog.Builder(this);
    		alert = b.setCancelable(false).setPositiveButton("OK", new OnClickListener() {
    			@Override
    			public void onClick(DialogInterface dialog, int which) {
    				alert.dismiss();
    				
    				VisualizarPedido.super.onBackPressed();

    			}
    		}).setMessage("Nenhum Programa para Visualizar Arquivo em PDF Instalado!").create();

    		alert.show();
        }
        catch(Exception e) {
        	Log.e("ERRO", e.getMessage());
        }
    }

Porem esta retornando esse erro agora: java.lang.NullPointerException: Attempt to invoke virtual method ‘android.content.res.XmlResourceParser android.content.pm.ProviderInfo.loadXmlMetaData(android.content.pm.PackageManager, java.lang.String)’ on a null object reference

Fiz umas alterações no meu xml e a classe esta assim agora:
public void visualizarPedido(){

        String caminhoPdf = getExternalFilesDir(null) + "/" + "pedido.pdf";
        File pdf = new File(caminhoPdf);
        Uri pdfURI = FileProvider.getUriForFile(VisualizarPedido.this, BuildConfig.APPLICATION_ID + ".provider", pdf);
        Intent pdfIntent = new Intent(Intent.ACTION_VIEW, pdfURI);
        pdfIntent.putExtra("", pdfURI);
       

        try
        {
            startActivity(pdfIntent); 
            VisualizarPedido.super.onBackPressed();
                     
        }
        catch(ActivityNotFoundException e)
        {
        	
        	final AlertDialog.Builder b = new AlertDialog.Builder(this);
    		alert = b.setCancelable(false).setPositiveButton("OK", new OnClickListener() {
    			@Override
    			public void onClick(DialogInterface dialog, int which) {
    				alert.dismiss();
    				
    				VisualizarPedido.super.onBackPressed();

    			}
    		}).setMessage("Nenhum Programa para Visualizar Arquivo em PDF Instalado!").create();

    		alert.show();
        }
        catch(Exception e) {
        	Log.e("ERRO", e.getMessage());
        }
    }

parece estar funcionando porque ele esta chamando o visualizador pdf do celular, mas fica em branco e se eu for na pasta que foi gravado o pdf ele esta la e abre normalmente e nao esta em branco.

Consegui resolver o problema, minha classe ficou assim:

public void visualizarPedido(){
	
	String caminhoPdf = Environment.getExternalStorageDirectory() + "/"  + "pedido.pdf";
	File pdf = new File(caminhoPdf);
	
	if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) {  

			pdfURI = FileProvider.getUriForFile(this, getPackageName() + ".provider", pdf);
       
        
        }else {
        	
        	pdfURI = Uri.fromFile(pdf);
        	
        }
	 Intent pdfIntent = new Intent(Intent.ACTION_VIEW);
     pdfIntent.setData(pdfURI);
     pdfIntent.setFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION);	
       

        try
        {
            startActivity(pdfIntent); 
            VisualizarPedido.super.onBackPressed();
                     
        }
        catch(ActivityNotFoundException e)
        {
        	
        	final AlertDialog.Builder b = new AlertDialog.Builder(this);
    		alert = b.setCancelable(false).setPositiveButton("OK", new OnClickListener() {
    			@Override
    			public void onClick(DialogInterface dialog, int which) {
    				alert.dismiss();
    				
    				VisualizarPedido.super.onBackPressed();

    			}
    		}).setMessage("Nenhum Programa para Visualizar Arquivo em PDF Instalado!").create();

    		alert.show();
        }
        catch(Exception e) {
        	Log.e("ERRO", e.getMessage());
        }
    }

Precisa adicionar essas linhas dentro de application no manifest:



e criar um xml com o nome de filepaths, e adicionar esse codigo no mesmo:

<?xml version="1.0" encoding="utf-8"?>