當我嘗試掃描QR碼時,我的應用程序正在關閉。我以前沒有使用asynctask,它工作正常,我想我的asynctask工作方式有問題,任何建議都會受到歡迎。下面 是我的logcat使用asynctask時QR閱讀器崩潰
03-26 12:19:16.797: E/AndroidRuntime(1104): FATAL EXCEPTION: Thread-101
03-26 12:19:16.797: E/AndroidRuntime(1104): android.content.ActivityNotFoundException: No Activity found to handle Intent { act=com.google.zxing.client.android.SCAN pkg=com.google.zxing.client.android (has extras) }
03-26 12:19:16.797: E/AndroidRuntime(1104): at android.app.Instrumentation.checkStartActivityResult(Instrumentation.java:1622)
03-26 12:19:16.797: E/AndroidRuntime(1104): at android.app.Instrumentation.execStartActivity(Instrumentation.java:1417)
03-26 12:19:16.797: E/AndroidRuntime(1104): at android.app.Activity.startActivityForResult(Activity.java:3370)
03-26 12:19:16.797: E/AndroidRuntime(1104): at android.app.Activity.startActivityForResult(Activity.java:3331)
03-26 12:19:16.797: E/AndroidRuntime(1104): at com.example.restaurantapp.MainActivity$InitTask$1.run(MainActivity.java:68)
03-26 12:19:16.797: E/AndroidRuntime(1104): at java.lang.Thread.run(Thread.java:856)
這是我的主要活動
public class MainActivity extends Activity {
Button btnScan;
TextView result1;
ImageView imgScan;
InitTask scan;
//@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//btnScan=(Button)findViewById(R.id.button1);
imgScan=(ImageView)findViewById(R.id.imageButton1);
imgScan.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
scan=new InitTask();
scan.execute();
}
});
}
public void onActivityResult(int requestCode, int resultCode, Intent intent) {
if (requestCode == 0) {
if (resultCode == RESULT_OK) {
result1=(TextView)findViewById(R.id.textView1);
String values = intent.getStringExtra("SCAN_RESULT");
//String format = intent.getStringExtra("SCAN_RESULT_FORMAT");
result1.setText(values);
Toast.makeText(MainActivity.this,
"Scan Result:" + values, Toast.LENGTH_LONG)
.show();
} else if (resultCode == RESULT_CANCELED) {
Toast.makeText(MainActivity.this, "you cancelled scanning", Toast.LENGTH_LONG).show();
}
}
}
private class InitTask extends AsyncTask<Void,Void,Void>{
protected Void doInBackground(Void...unused){
new Thread(new Runnable() {
@Override
public void run() {
Intent intent = new Intent(
"com.google.zxing.client.android.SCAN");
intent.setPackage("com.google.zxing.client.android");
intent.putExtra("SCAN_MODE", "QR_CODE_MODE");
startActivityForResult(intent, 0);
}
}).start();
return null;
}
}
}
請大家幫忙,是什麼造成這種任何想法? 謝謝:)
首先你正在使用已經在後臺運行的'doInBackground',但是你還需要使用一個'Thread'來啓動'zxing' Activity。對不起,這不起作用。建議:從doInBackground中刪除第二個線程。使用'MainActivity.this.startActivityForResult'來啓動活動 – 2013-03-26 12:49:16
我刪除了doInBackground中的第二個線程,我應該在哪裏使用MainActivity.this.startActivityForResult? – niraj 2013-03-26 12:53:16
我的意思是使用'MainActivity.this。startActivityForResult'而不是'startActivityForResult'來啓動doInBackground裏面的Activity – 2013-03-26 12:54:56