2013-02-08 2 views
1

Я правильно настроил свой принтер, работая с сторонними приложениями.Google Cloud Print Пример WebView не работает

Но я хочу печатать с моего собственного приложения для Android. Я связал официальный учебник: https://developers.google.com/cloud-print/docs/android

Но кнопка Print в WebView не работает.

Что такое трюк :)

ответ

3

У меня была такая же проблема, пока я не нашел решение на веб-сайте для разработчиков Android: http://developer.android.com/guide/webapps/webview.html.

targetSdkVersion в AndroidManifest.xml вашего приложения, вероятно, установлен на 17 или выше. В этом случае вам нужно внести небольшое изменение в PrintDialogActivity, который вы получили с веб-сайта разработчика Google. Вы должны добавить аннотацию @JavascriptInterface к общедоступным методам в классе PrintDialogJavaScriptInterface.

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(); 
     } 
    } 
} 
+0

Извините, но все еще не работает со мной :( –

Смежные вопросы