在使用Codename One共享按钮时,没有应用程序可以在Android上执行此操作

时间:2017-03-05 14:48:20

标签: share codenameone

我的Codename One应用程序具有ShareButton,其使用方式如下:

 // Share this report on social networks (text plus screenshot)
    ShareButton shareReportButton = new ShareButton();
    shareReportButton.setText("Share this report!");
    shareReportButton.getAllStyles().setBorder(
                    RoundBorder.create().rectangle(true));
    FontImage.setMaterialIcon(shareReportButton, FontImage.MATERIAL_SHARE);
    shareReportButton.getStyle().setBgColor(ParametresGeneraux.accentColor);
    shareReportButton.getPressedStyle().setBgColor(ParametresGeneraux.darkPrimaryColor);

    shareReportButton.setTextToShare("I reported this via the great app ABCD "!"
    );
    shareReportButton.setImageToShare(currentReport.getPhotoPath(), ImageIO.FORMAT_PNG);

我在模拟器下按预期工作,但在实际的Android 4.4设备上,我得到一个带有&#34的对话菜单;没有应用程序可以执行此操作"。

Cannot share text with image

请注意,可以与原生应用分享例如照片。

我找不到任何构建提示来添加in the doc。我该怎么做才能让分享按钮提供一种在社交网络上分享文字+照片的方法?

任何帮助表示赞赏,

此致

编辑

在@James H和@Diamond回答后,图像类型必须设置为mime类型。因此,用" image / jpg"替换ImageIO.FORMAT_PNG;填充共享菜单。

为完整起见,请注意文档

中所述
  

必须使用FileSystemStorage API存储图像,并且不应使用其他API,例如存储!

因此即使照片在缓存中,您也必须将其复制到您的主文件夹,然后在ShareButton中使用此复制版本。

2 个答案:

答案 0 :(得分:2)

我认为问题可能就是

setImageToShare(String imagePath, String imageMimeType)

正在寻找具有不同格式的Mime描述,例如:“image / png”

我不确定ImageIO.FORMAT_PNG是否以这种方式工作。查看JavaDoc中的示例,它使用:

sb.setImageToShare(imageFile, "image/png");

答案 1 :(得分:2)

使用本机共享功能,并通过执行以下操作检查本机共享是否支持:

// Share this report on social networks (text plus screenshot)
Button shareReportButton = new Button("Share this report!");
shareReportButton.getAllStyles().setBorder(create().rectangle(true));
FontImage.setMaterialIcon(shareReportButton, FontImage.MATERIAL_SHARE);
shareReportButton.getStyle().setBgColor(ParametresGeneraux.accentColor);
shareReportButton.getPressedStyle().setBgColor(ParametresGeneraux.darkPrimaryColor);
shareReportButton.addActionListener(e -> {
    if (Display.getInstance().isNativeShareSupported()) {
        Display.getInstance().share("I reported this via the great app ABCD ", currentReport.getPhotoPath(), "image/png"); // Or "image/jpg"
    } else {
        ToastBar.showErrorMessage("Your phone doesn't support sharing...");
    }
});