Após atualização do targetSdkVersion para API 31 de minha aplicação, não estou mais conseguindo compartilhar imagens da aplicação pelo Whatsapp.
Seque meu código:
public static File getFilePath(String child, Context context) {
if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.KITKAT) {
ContextWrapper contextWrapper = new ContextWrapper(context);
File file = contextWrapper.getExternalFilesDir(Environment.DIRECTORY_DCIM);
return new File(file, child);
} else {
return new File(Environment.getExternalStorageDirectory(), child);
}
}
public static void shareImage(Context context, Produto produto) {
String appPackage = "";
if (isAppInstalled(context, "com.whatsapp.w4b")) {
appPackage = "com.whatsapp.w4b";
} else if (isAppInstalled(context, "com.whatsapp")) {
appPackage = "com.whatsapp";
}
File file = new File(FilePathUtil.getFilePath(File.separator + "PlanforMobile" + File.separator + "Imagens", context) + File.separator + produto.getCodpro() + ".jpg");
Uri imgUri = Uri.parse("android.resource:/" + file);
Intent whatsappIntent = new Intent(Intent.ACTION_SEND);
whatsappIntent.setType("text/plain");
whatsappIntent.setPackage(appPackage);
whatsappIntent.putExtra(Intent.EXTRA_TEXT, produto.getCodpro() + " " + produto.getCodder() + " - " + produto.getDescpro());
whatsappIntent.putExtra(Intent.EXTRA_STREAM, imgUri);
whatsappIntent.setType("image/jpeg");
whatsappIntent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION);
try {
context.startActivity(whatsappIntent);
} catch (ActivityNotFoundException ex) {
AlertUtil.alert(context, "Whatsapp não instalado.");
}
}
private static boolean isAppInstalled(Context ctx, String packageName) {
PackageManager pm = ctx.getPackageManager();
boolean app_installed;
try {
pm.getPackageInfo(packageName, PackageManager.GET_ACTIVITIES);
app_installed = true;
} catch (PackageManager.NameNotFoundException e) {
app_installed = false;
}
return app_installed;
}
Ao escolher a imagem e tentar compartilhar, a aplicação abre o Whatsapp, me da a opção de escolher o destinatário, porém ao clicar em enviar, da o erro “O formato do arquivo não é compatível”.
Este problema ocorre somente com Android em versões mais atuais (versão 10 e 11).
Como posso resolver este problema?