通过 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 云打印进行打印的主要内容,如果未能解决你的问题,请参考以下文章