通过 Google 云打印进行打印

Posted

技术标签:

【中文标题】通过 Google 云打印进行打印【英文标题】:Printing via Google Cloud Print 【发布时间】:2012-04-12 07:13:53 【问题描述】:

我正在尝试打印我的应用程序通过 FileWriter 保存的 .txt 文件。

它保存的文件是/sdcard/StudentLatePass.txt

当点击打印按钮时,SD文件被保存,然后需要打印。我一直在关注google cloud print tutorial。

package com.android.upgrayeddapps.latepass;



import java.io.File;
import java.io.FileOutputStream;
import java.io.OutputStreamWriter;

import android.app.Activity;
import android.app.AlertDialog;
import android.content.Context;
import android.content.Intent;
import android.net.Uri;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.EditText;
import android.widget.Button;
import android.widget.Toast;



public class StudentActivity extends Activity 

    EditText txtData;
    Button btnPrintTardy;

    public void onCreate(Bundle savedInstanceState) 
    
         super.onCreate(savedInstanceState);
         setContentView(R.layout.student);

        //Displays the Custom dialog for student login
        AlertDialog.Builder builder;
        AlertDialog alertDialog;

        Context mContext = this;
        LayoutInflater inflater = (LayoutInflater) mContext.getSystemService(LAYOUT_INFLATER_SERVICE) ;
        View layout = inflater.inflate(R.layout.studentlogin, null);

        builder = new AlertDialog.Builder(mContext);
        builder.setView(layout);            

        alertDialog = builder.create();
        alertDialog.show();

        txtData = (EditText) findViewById(R.id.editText1);

        btnPrintTardy = (Button) findViewById(R.id.btnPrintTardy);
        btnPrintTardy.setOnClickListener(new OnClickListener() 

        public void onClick(View v) 
            // write on SD card file data in the text box
            try 
                File myFile = new File("/sdcard/StudentLatePass.txt");
                myFile.createNewFile();
                FileOutputStream fOut = new FileOutputStream(myFile);
                OutputStreamWriter myOutWriter = 
                                        new OutputStreamWriter(fOut);
                myOutWriter.append(txtData.getText());
                myOutWriter.close();
                fOut.close();
                Toast.makeText(getBaseContext(),
                        "Done writing SD 'StudentLatePass.txt'",
                        Toast.LENGTH_SHORT).show();
             catch (Exception e) 
                Toast.makeText(getBaseContext(), e.getMessage(),
                        Toast.LENGTH_SHORT).show();
            


        // onClick
        ); // btnWriteSDFile


        btnPrintTardy.setOnClickListener(new OnClickListener() 
        public void onClick(View v) 
            //Print using Google Cloud Print
            Intent printIntent = new Intent(this, PrintDialogActivity.class);
                printIntent.setDataAndType(docUri, "text/plain");
                printIntent.putExtra("title", "Student Late Pass");
                startActivity(printIntent);

            // onClick
    );// btnPrintSDFile




    

    // Clear all activities on the top of the stack and deliver the intent to (on top now) MainActivity with a new Intent
    public void onGotoLatePassActiviy(View View)
    
        Intent intent = new Intent(View.getContext(), LatePassActivity.class);
        intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
        StudentActivity.this.finish();
    

为了我的一生,我试图将 docUri、docMimeType 和 docTitle 更改为阳光下的所有内容以打印此文件。

我目前修改的代码是

btnPrintTardy.setOnClickListener(new OnClickListener() 
        public void onClick(View v) 
            //Print using Google Cloud Print
            Intent printIntent = new Intent(this, PrintDialogActivity.class);
                printIntent.setDataAndType(docUri, "text/plain");
                printIntent.putExtra("title", "Student Late Pass");
                startActivity(printIntent);

            // onClick
    );// btnPrintSDFile

我仍然在 docUri 下得到红色的波浪线,当我将意图传递给 Print

【问题讨论】:

将鼠标悬停在“红色波浪”上,它会说什么? 【参考方案1】:

试试这个,看看会发生什么:

Intent printIntent = new Intent(StudentActivity.this, PrintDialogActivity.class);

这应该可以解决第一个“红色波浪线”。


这是您可以尝试解决 URI 问题的方法。

File file = new File("/sdcard/StudentLatePass.txt");
intent.setDataAndType(Uri.fromFile(file), "text/*");

【讨论】:

vwola,现在你知道我需要将 docUri 更改为什么了吗?它保存的文件位于 /sdcard/StudentLatePass.txt 我添加了更多信息,让我知道它是否有效。如果可行,请给我+1。 =) 我想你们两个都让我开心。 如果这对您有帮助,请不要忘记 +1 我们。 =)

以上是关于通过 Google 云打印进行打印的主要内容,如果未能解决你的问题,请参考以下文章

使用 C# 的 Google 云打印

从 javascript 调用 Google 云打印/搜索 API

XSRF 令牌验证失败 Google 云打印

未找到 Google 云打印 OAuth 范围

如何通过 React Native 将打印作业发送到打印机

如何使用 Google 脚本打印驱动器文档