1

Android 4.3 搭載の Nexus 7 第 2 版で Google クラウド プリントに問題が発生しました。私は自分のアプリでサンプル コードを使用していますが、Nexus 7 を除く多くの Android デバイスと、Android 4.3 を搭載した他のデバイスで正常に動作します。

このページを取得するまで、すべて正常に動作します。

ここに画像の説明を入力

前に「Googleドライブに印刷」を選択しました。そして、印刷ボタンをクリックしても何も起こりません...新しいジョブの開始などに関するメッセージはありません。

誰かがアドバイスをくれるかもしれません。どうもありがとう。

4

1 に答える 1

7

これによると、 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();
        }
    }
}
于 2013-09-18T13:10:55.393 に答える