谷歌云打印在Nexus 7中不起作用(Android 4.3)

时间:2013-09-18 10:09:53

标签: android android-4.3-jelly-bean google-cloud-print

我在使用Android 4.3的Nexus 7第2版上遇到了Google云打印问题。我在我的应用程序中使用example code,它可以在很多Android设备上运行,除了Nexus 7和其他一些设备与Android 4.3。

在我收到此页面之前,一切正常。

enter image description here

我之前选择'打印到谷歌驱动器'。然后,如果点击打印按钮没有任何反应......没有任何关于开始新工作或其他事情的消息。

也许有人可以给出一些建议。非常感谢。

1 个答案:

答案 0 :(得分:7)

根据this,我们需要通过为 PrintDialogJavaScriptInterface 中的所有方法添加 @JavascriptInterface 注释来修改示例代码,并将属性> Android>项目构建目标更改为API 17 +

final class PrintDialogJavaScriptInterface {
    @JavascriptInterface
    public String getType() {
        return cloudPrintIntent.getType();
    }

    @JavascriptInterface
    public String getTitle() {
        return cloudPrintIntent.getExtras().getString(TITLE);
    }

    @JavascriptInterface
    public String getContent() {
        try {
            ContentResolver contentResolver = getContentResolver();
            InputStream is = contentResolver.openInputStream(cloudPrintIntent.getData());
            ByteArrayOutputStream baos = new ByteArrayOutputStream();

            byte[] buffer = new byte[4096];
            int n = is.read(buffer);
            while (n >= 0) {
                baos.write(buffer, 0, n);
                n = is.read(buffer);
            }
            is.close();
            baos.flush();

            return Base64.encodeToString(baos.toByteArray(), Base64.DEFAULT);
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }
        return "";
    }

    @JavascriptInterface
    public String getEncoding() {
        return CONTENT_TRANSFER_ENCODING;
    }

    @JavascriptInterface
    public void onPostMessage(String message) {
        if (message.startsWith(CLOSE_POST_MESSAGE_NAME)) {
            finish();
        }
    }
}