我真的真的很新,所以不要笑得太厉害......或说话过于隐秘...... 我已经搜索,实验和搜索等...我正在学习,但我也越来越困惑了!
我需要循环浏览SD卡上的文件夹并通过Android意图逐个发送该文件夹中的任何.html文件的每个实例,一旦每个已经由另一个Android应用程序成功处理/打印机。让我们打印Droid(一个伟大的网络连接打印机打印应用程序)。 这个应用程序只能接受一个文件,处理该文件呈现它等然后将其发送到打印机然后它通过意图发送回结果好坏!
我尝试了各种睡眠选项(我知道的不好的做法!)并等待并通知(我相信更好吗?)但我不能让它打印超过它找到的第一个或最后一个文件(取决于我的代码! )
以下是我的代码的一个版本。此版本通过“Lets Print Driod”应用程序发送它处理的第一个文件,然后继续循环显示我的Toast消息“Waiting loop number - >”。
在我的循环中收到意图结果后,有人能告诉我使用等待和通知的正确方法吗?
非常感谢您的帮助。
package com.my.test;
import android.app.Activity;
import android.content.Intent;
import android.net.Uri;
import android.os.Bundle;
import android.view.Menu;
import android.widget.Toast;
public class MainActivity extends Activity {
String received_results_from_LPD = "YES";
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
try {
print_all_html();
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
public synchronized void print_all_html() throws InterruptedException {
received_results_from_LPD = "YES";
for(int x = 1; x < 6; x = x+1) {
if (received_results_from_LPD == "YES") {
Intent i = new Intent(Intent.ACTION_VIEW);
i.setClassName("com.blackspruce.lpd","com.blackspruce.lpd.WebPrint");
i.setData( Uri.parse("file:///storage/emulated/0/Pictures/test" + x + ".html"));
Toast.makeText(getApplicationContext(), "Loop Position " + x, Toast.LENGTH_SHORT).show();
Toast.makeText(getApplicationContext(), "Value of LPD " + received_results_from_LPD, Toast.LENGTH_SHORT).show();
Toast.makeText(getApplicationContext(), "Printing " + "test" + x + ".html", Toast.LENGTH_SHORT).show();
received_results_from_LPD = "NO"; //reset for next time
startActivityForResult(i, 99);
//wait();
}
else Toast.makeText(getApplicationContext(), "Waiting loop number --> " + x, Toast.LENGTH_SHORT).show();
received_results_from_LPD = "NO";
Thread.sleep(1000);
}
}
@Override
protected synchronized void onActivityResult(int requestCode, int resultCode, Intent data) {
// TODO Auto-generated method stub
super.onActivityResult(requestCode, resultCode, data);
if (data != null && requestCode == 99 && resultCode == RESULT_OK) {
//successful
Toast.makeText(getApplicationContext(), "Sucessfull", Toast.LENGTH_SHORT).show();
received_results_from_LPD = "YES";
//notify();
}
else {
//not successful
Toast.makeText(getApplicationContext(), "oopps!!!!", Toast.LENGTH_SHORT).show();
received_results_from_LPD = "YES";
//notify();
}
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.main, menu);
return true;
}
}
修好它的种类...提起它?!?不完全是我希望的,但暂时打印,直到我更好地理解Java!
答案 0 :(得分:0)
你的代码不是'坏',只是你不能这样循环,因为启动活动没有阻塞。如果我仍然在onActivityResult中处理数据,我会删除for并测试。