我在使用 Android 4.3 的 Nexus 7 第 2 版上遇到了 Google 云打印问题。我在我的应用程序中使用了示例代码,它可以在除 Nexus 7 之外的许多 android 设备上正常工作,也许还有其他一些具有 android 4.3 的设备。
一切正常,直到我得到这个页面。
我之前选择了“打印到谷歌驱动器”。然后,如果单击打印按钮没有任何反应......没有任何关于开始新工作或其他事情的消息。
也许有人可以提供一些建议。非常感谢。
我在使用 Android 4.3 的 Nexus 7 第 2 版上遇到了 Google 云打印问题。我在我的应用程序中使用了示例代码,它可以在除 Nexus 7 之外的许多 android 设备上正常工作,也许还有其他一些具有 android 4.3 的设备。
一切正常,直到我得到这个页面。
我之前选择了“打印到谷歌驱动器”。然后,如果单击打印按钮没有任何反应......没有任何关于开始新工作或其他事情的消息。
也许有人可以提供一些建议。非常感谢。
据此,我们需要修改示例代码,为 PrintDialogJavaScriptInterface 中的所有方法添加@JavascriptInterface注释,并将Properties>Android>Project Build Target 更改为 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();
}
}
}