如何使用QR code结果从zxing为一个字符串 [英] How to use qr code result from zxing as a string
问题描述
所以我就用zxing意图工作,但我如何使用输出并保存为一个字符串真的很困惑。
下面是这样做的目的
公共无效扫描(查看视图){ 尝试{ 意向意图=新意图(com.google.zxing.client.android.SCAN);
intent.putExtra(SCAN_MODE,QR_ code_MODE); //PRODUCT_MODE为酒吧codeS startActivityForResult(意向,0); }赶上(例外五){ 乌里marketUri = Uri.parse(?市场://细节ID = com.google.zxing.client.android);
意图marketIntent =新意图(Intent.ACTION_VIEW,marketUri);
startActivity(marketIntent); }
}@覆盖
保护无效的onActivityResult(INT申请code,INT结果code,意图数据){
super.onActivityResult(要求code,结果code,数据);
如果(要求code == 0){ 如果(结果code == RESULT_OK){
字符串内容= data.getStringExtra(SCAN_RESULT);
}
如果(结果code == RESULT_CANCELED){
//处理取消
}
}
}
和尝试使用它作为一个字符串:
<的TextView
机器人:ID =@ + ID /结果
机器人:layout_width =WRAP_CONTENT
机器人:layout_height =WRAP_CONTENT
机器人:文字=@字符串/title_activity_on_activity_result
机器人:layout_marginTop =45dp
机器人:layout_alignParentTop =真
机器人:layout_alignRight =@ + ID /按钮
机器人:layout_alignEnd =@ + ID /键/>
和最后的字符串:
<字符串名称=APP_NAME> TEST123< /串>
<字符串名称=参考hello world>世界,你好<!/串>
<字符串名称=action_settings>设置< /串>
<字符串名称=button_scan>扫描和LT; /串>
<字符串名称=title_activity_activity_result> ActivityResult< /串>
<字符串名称=title_activity_on_activity_result>的onActivityResult< /串>
真的AP preciate一些帮助!
例外:主
了java.lang.RuntimeException:无法恢复活动
{com.JunkerDev.testfaggot / com.JunkerDev.testfaggot.MainActivity}:
了java.lang.RuntimeException:不提供结果ResultInfo {谁= NULL,请求= 0,
结果= -1,数据= {意图行事= com.google.zxing.client.android.SCAN FLG = 0x80000(有
演员)}}到活动
{com.JunkerDev.testfaggot / com.JunkerDev.testfaggot.MainActivity}:
显示java.lang.NullPointerException
在QR code的文字是在局部变量内容
。这必须设置为您的的TextView
的id为结果
,在code不在XML文本。
要做到这一点,你应该在你的活动声明的成员:
的TextView mResult;
在的onCreate()
,在的setContentView()
,其绑定到的TextView
mResult =(的TextView)findViewById(R.id.result);
终于在的onActivityResult()
:
如果(结果code == RESULT_OK){
字符串内容= data.getStringExtra(SCAN_RESULT);
mResult.setText(内容);
}
so i got zxing working using an intent, but i am really confused as how to use the output and save it as a string.
Here is The intent
public void scan(View view){
try {
Intent intent = new Intent("com.google.zxing.client.android.SCAN");
intent.putExtra("SCAN_MODE", "QR_CODE_MODE"); // "PRODUCT_MODE for bar codes
startActivityForResult(intent, 0);
} catch (Exception e) {
Uri marketUri = Uri.parse("market://details?id=com.google.zxing.client.android");
Intent marketIntent = new Intent(Intent.ACTION_VIEW,marketUri);
startActivity(marketIntent);
}
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (requestCode == 0) {
if (resultCode == RESULT_OK) {
String contents = data.getStringExtra("SCAN_RESULT");
}
if(resultCode == RESULT_CANCELED){
//handle cancel
}
}
}
And trying to use it as a string:
<TextView
android:id="@+id/result"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/"title_activity_on_activity_result"
android:layout_marginTop="45dp"
android:layout_alignParentTop="true"
android:layout_alignRight="@+id/button"
android:layout_alignEnd="@+id/button" />
and finally the strings:
<string name="app_name">TEST123</string>
<string name="hello_world">Hello world!</string>
<string name="action_settings">Settings</string>
<string name="button_scan">Scan</string>
<string name="title_activity_activity_result">ActivityResult</string>
<string name="title_activity_on_activity_result">onActivityResult</string>
Would really appreciate some help!
EXCEPTION: main
java.lang.RuntimeException: Unable to resume activity
{com.JunkerDev.testfaggot/com.JunkerDev.testfaggot.MainActivity}:
java.lang.RuntimeException: Failure delivering result ResultInfo{who=null, request=0,
result=-1, data=Intent { act=com.google.zxing.client.android.SCAN flg=0x80000 (has
extras) }} to activity
{com.JunkerDev.testfaggot/com.JunkerDev.testfaggot.MainActivity}:
java.lang.NullPointerException
The text in the QR code is in the local variable contents
. This has to be set as the text of your TextView
with id result
, in code not in xml.
To do so, you should declare a member in your Activity:
TextView mResult;
in onCreate()
, after setContentView()
, bind it to the TextView
mResult = (TextView) findViewById(R.id.result);
and finally in onActivityResult()
:
if (resultCode == RESULT_OK) {
String contents = data.getStringExtra("SCAN_RESULT");
mResult.setText(contents);
}
这篇关于如何使用QR code结果从zxing为一个字符串的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!