如果图像我需要选择PDf文件

时间:2018-09-08 09:56:46

标签: android

public void getPhoto() {
    Intent intent = new Intent(Intent.ACTION_GET_CONTENT);
    intent.setType("file/*");
    startActivityForResult(intent, 1);
}

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    super.onActivityResult(requestCode, resultCode, data);

    if (requestCode == 1 && resultCode == RESULT_OK && data != null) {
        Uri selectedImage = data.getData();

        try {
            if(clicked==true){
                Bitmap bitmap = MediaStore.Images.Media.getBitmap(this.getContentResolver(), selectedImage);

                Log.i("Photo", "Received");

                ByteArrayOutputStream stream = new ByteArrayOutputStream();

                bitmap.compress(Bitmap.CompressFormat.PNG, 100, stream);

                byte[] byteArray = stream.toByteArray();

                ParseFile file = new ParseFile("image.png", byteArray);
            }

我正在努力解决这个问题,有人告诉如何获取pdf文件并将其转换为Byte数组

2 个答案:

答案 0 :(得分:0)

使用此代码获取pdf文件,并获取名称,路径,文件和Byte [];

public void getPhoto(){

    Intent intent = new Intent();
            intent.setAction(Intent.ACTION_GET_CONTENT);
            intent.setType("application/pdf");
    startActivityForResult(intent, 1);


}



    @Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        super.onActivityResult(requestCode, resultCode, data);

        if (requestCode == 1 && resultCode == RESULT_OK && data != null) {

            Uri selectedImage = data.getData();

            try {

                if(clicked==true){
         Uri uri = data.getData();
            String uriString = uri.toString();
            File myFile = new File(uriString);
            String path = myFile.getAbsolutePath();
            String displayName = null;
            Byte[] fileToByteArray=org.apache.commons.io.FileUtils.readFileToByteArray(myFile);
            if (uriString.startsWith("content://")) {                   
                Cursor cursor = null;
                try {                           
                    cursor = getActivity().getContentResolver().query(uri, null, null, null, null);                         
                    if (cursor != null && cursor.moveToFirst()) {                               
                        displayName = cursor.getString(cursor.getColumnIndex(OpenableColumns.DISPLAY_NAME));
                    }
                } finally {
                    cursor.close();
                }
            } else if (uriString.startsWith("file://")) {           
                displayName = myFile.getName();
            }

                }

答案 1 :(得分:-1)

Use below code and declare provider  in your manifest.xml. and also create a provider.xml in your xml folder and provide the desired path in provider.xml and use the byte array for following code.

File pdf = new File(Environment.getExternalStorageDirectory(), "Download" +"/"+ fileName+ ".pdf");
                            Uri fileURI = FileProvider.getUriForFile(MainActivity.this, "your package name" + ".provider", file1);
                            Intent intent = new Intent();
                            intent.setAction(Intent.ACTION_VIEW);
                            intent.setDataAndType(fileURI, "application/pdf");
                            intent.setFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION | Intent.FLAG_ACTIVITY_NEW_TASK);
                            startActivity(intent);