21

我想知道在android中是否可以使用QR码阅读器启动应用程序。我想要实现的目标是:

我创建了二维码,在使用二维码阅读器扫描后,我需要使用一些参数启动我的应用程序,也许它看起来像这样:myApp://org.hardartcore.myApp?myParams 或者类似的东西,不是真的当然。

有没有办法实现这一点并获得构建在 qr 代码中的参数,以启动应用程序。

4

3 回答 3

18

使用此文本创建二维码:myApp://extraString并使用任何二维码阅读器阅读。甚至您可以使用Zxing的开源集成您自己的二维码阅读器。你可以得到extraString@Sean Owen 提到的使用getIntent().getDataString(). 并且不要忘记将其添加到您的清单文件中:

<intent-filter>
<action android:name="android.intent.action.VIEW"/>
<category android:name="android.intent.category.DEFAULT"/>
<category android:name="android.intent.category.BROWSABLE"/>
<data android:scheme="myApp"/>
</intent-filter>

那应该行得通。

于 2012-05-08T07:38:28.417 回答
8

是的。在AndroidManifest.xml中,在您的 中<activity>,声明应用程序响应此 URL:

  <intent-filter>
    <action android:name="android.intent.action.VIEW"/>
    <category android:name="android.intent.category.DEFAULT"/>
    <category android:name="android.intent.category.BROWSABLE"/>
    <data android:scheme="myApp" android:host="org.hardartcore.myApp" android:path="/"/>
  </intent-filter>

(我认为您可能必须在您的“?”之前以“/”结尾才能使其正常工作。)

然后任何使用该平台解析 URL 的东西都会打开您的应用程序。Web 浏览器中的超链接将起作用。

可以使用 检索 URL 本身getIntent().getDataString()。您可以根据需要对其进行解析android.net.Uri

CaptureActivityZXing中查看它是如何做到这一点的示例。

于 2012-04-21T12:36:20.040 回答
-3

是的,可以通过使用意图来实现。

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) 
     {
              final String contents = intent.getStringExtra("SCAN_RESULT");
        Toast.makeText(this, contents, Toast.LENGTH_SHORT).show();
} else if (resultCode == RESULT_CANCELED) 
        {
    Toast.makeText(this, "Not proper QRCODE...!",Toast.LENGTH_SHORT).show();
    }
}
}
于 2012-04-21T12:26:13.647 回答