我想知道在android中是否可以使用QR码阅读器启动应用程序。我想要实现的目标是:
我创建了二维码,在使用二维码阅读器扫描后,我需要使用一些参数启动我的应用程序,也许它看起来像这样:myApp://org.hardartcore.myApp?myParams 或者类似的东西,不是真的当然。
有没有办法实现这一点并获得构建在 qr 代码中的参数,以启动应用程序。
使用此文本创建二维码: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>
那应该行得通。
是的。在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
。
CaptureActivity
在ZXing中查看它是如何做到这一点的示例。
是的,可以通过使用意图来实现。
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();
}
}
}