0
Hello,
The goal is to Decode a Base64 string and move it to PDF format and open (no need to download to android device).
Right now I have this:
public void onClick(View view) {
int position = getAdapterPosition();
//Toast.makeText(ctx, "Sapo" + position + base64Strisng, Toast.LENGTH_SHORT).show();
Log.e("Test", base64String.toString());
try {
//Não sei como fazer o decode da string e passar para o itent
Intent intent = new Intent(Intent.ACTION_VIEW);
intent.setDataAndType(Uri.fromFile(f), "application/pdf");
intent.setFlags(Intent.FLAG_ACTIVITY_NO_HISTORY);
ctx.startActivity(intent);
} catch (IOException e) {
e.printStackTrace();
}
}
Update 1
@Override
public void onClick(View view) {
int position = getAdapterPosition();
//Toast.makeText(ctx, "Sapo" + position + base64Strisng, Toast.LENGTH_SHORT).show();
Log.e("Test", base64String.toString());
byte[] pdfStream = Base64.decode(base64String, 0);
InputStream inputStream = new ByteArrayInputStream(pdfStream);
File file ;
try {
file = new File(Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOWNLOADS), "sapo.pdf");
Logger.getLogger("createFile: "+file.getAbsolutePath());
OutputStream outputStream = new FileOutputStream(file);
IOUtils.copy(inputStream, outputStream);
outputStream.close();
Intent intent = new Intent(Intent.ACTION_VIEW);
intent.setDataAndType(Uri.fromFile(file), "application/pdf");
intent.setFlags(Intent.FLAG_ACTIVITY_NO_HISTORY);
ctx.startActivity(intent);
} catch (IOException e) {
e.printStackTrace();
}
}
Update 3
Problem solved, I was doing Code wrong
What I had (wrong):
byte[] pdfStream = base64String.getBytes(Standardcharsets.UTF_8);
What I have changed (correct)
byte[] pdfStream = Base64.Decode(base64String, 0);
I updated my post because I made changes.
– Pinalele