GUJ Discussões   :   últimos tópicos   |   categorias   |   GUJ Respostas

Intent para compartilhar imagens pelo WhatsApp (Target SDK 31)- Formato de Arquivo não compatível

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?

Olá, resolvi meu problema utilizando os ajustes baseado nesta publicação: java - exposed beyond app through ClipData.Item.getUri - Stack Overflow

//