Qr代码阅读器不会重定向到特定链接

时间:2012-02-20 13:48:41

标签: android

我正在创建一个qr代码阅读器应用程序,我从zXing资源中获取帮助,在我的手机上运行我的应用程序后,它显示“找到URL”并且不会将我重定向到qr代码的特定链接。它让我回到我的主要活动。 我的项目名称是“scan”,我添加了core.jar文件。我还有一个布局页面,即main.xml,其中一个按钮名为“scan qr code”,活动名称为“ScanActvity.java”,我项目的整个编码为:

ScanActivity.java

package com.scan.qr;

import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;

public class ScanActivity extends Activity {
/** Called when the activity is first created. */
Button btnScan;
@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);

    btnScan = (Button) findViewById(R.id.button1);

    btnScan.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            // TODO Auto-generated method stub

            Intent intent = new Intent("com.google.zxing.client.android.SCAN");
            intent.putExtra("SCAN_MODE", "QR_CODE_MODE");
            startActivityForResult(intent, 0);

        }
    });

    }


    public void onActivityResult(int requestCode, int resultCode, Intent intent) {
           if (requestCode == 0) {
              if (resultCode == RESULT_OK) {
                 String contents = intent.getStringExtra("SCAN_RESULT");
                 String format = intent.getStringExtra("SCAN_RESULT_FORMAT");
                 // Handle successful scan
              } else if (resultCode == RESULT_CANCELED) {
                 // Handle cancel
              }
           }
        }                  
          }

main.xml中

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical" >


<RelativeLayout
    android:id="@+id/relativeLayout1"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent" >



    <Button
        android:id="@+id/button1"
        android:layout_width="150dp"
        android:layout_height="60dp"
        android:layout_centerHorizontal="true"
        android:layout_centerVertical="true"
        android:text="Scan qr code" />

</RelativeLayout>

</LinearLayout>

ActivityMainfest.xml

 <?xml version="1.0" encoding="utf-8"?>
 <manifest xmlns:android="http://schemas.android.com/apk/res/android"
 package="com.scan.qr"
 android:versionCode="1"
 android:versionName="1.0" >

<uses-sdk android:minSdkVersion="7" />
<uses-permission android:name="android.permission.CAMERA"/>

<application
    android:icon="@drawable/ic_launcher"
    android:label="@string/app_name" >
    <activity
        android:name=".ScanActivity"
        android:label="@string/app_name" >
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />

            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>

    <activity android:name="com.google.zxing.client.android.CaptureActivity"
    android:screenOrientation="landscape"
    android:configChanges="orientation|keyboardHidden"
    android:theme="@android:style/Theme.NoTitleBar.Fullscreen"
    android:windowSoftInputMode="stateAlwaysHidden">
    <intent-filter>
    <action android:name="android.intent.action.MAIN"/>
    <category android:name="android.intent.category.DEFAULT"/>
    </intent-filter>
       <intent-filter>
       <action android:name="com.google.zxing.client.android.SCAN"/>
       <category android:name="android.intent.category.DEFAULT"/>
    </intent-filter>
    </activity>

    </application>

    </manifest>

我还在我的项目名为“scan”中添加了一个包含core.jar文件的文件夹“zcore”,并将其添加到属性中,即在“JavaBuildPath”下添加名为“core.jar”的jar文件位于“zcore”中我项目的文件夹。

现在我试图在模拟器上运行它,它给我这样的错误信息:

AndroidRuntime(401): at     
com.google.zxing.client.android.camera.CameraManager.getFramingRectInPreview   
(CameraManager.java:218)

AndroidRuntime(401): at  
com.google.zxing.client.android.ViewfinderView.onDraw(ViewfinderView.java:117) 

AndroidRuntime(401): at   
com.android.internal.policy.impl.PhoneWindow$DecorView.draw(PhoneWindow.java:1830)

dalvikvm(401): Unable to open stack trace file '/data/anr/traces.txt': Permission 
denied

然后我尝试在我的三星Galaxy y手机上运行apk文件,它运行正常,当我点击“扫描二维码”按钮时,它打开相机,当我把二维码的图像放在相机前面时检测到qr代码并读取它并说“找到URL”,然后主页面再次打开,它不会将我重定向到特定的URL。我如何计算它将如何重定向我并向我显示qt代码的信息?为什么不将它重定向到URL,为什么在扫描qr代码后再次打开主页?

请帮我解决这个问题!我做了什么错了,或者在制作qr代码阅读器时有什么事情要做,还请建议我如何在qr代码阅读器中添加过滤器。

1 个答案:

答案 0 :(得分:1)

您没有启动网址的代码。线索在这里:

if (resultCode == RESULT_OK) {
    String contents = intent.getStringExtra("SCAN_RESULT");
    String format = intent.getStringExtra("SCAN_RESULT_FORMAT");
    // Handle successful scan

您需要将Handle successful scan提醒替换为某些代码才能实际处理扫描的网址。有关如何启动网址的示例,请参阅How can I open a URL in Android's web browser from my application?