考虑一下这个场景:我制作了两个Android应用程序,比如A& B. B扫描一个NFC标签,存储一个字符串“nfcservice”,我将该字符串存储在一个字节数组中,比如说TEMP_MSG为十六进制。之后,我将该数组转换为String并将其发送到App-A。在App-A中,我尝试匹配它,但每次都失败。问题是什么?你能提出一些建议吗?
App-B代码:
//nfcservice
byte[] TEMP_MSG = {(byte)0x6E, (byte)0x66, (byte)0x63, (byte)0x73, (byte)0x65,
(byte)0x72, (byte)0x76, (byte)0x69, (byte)0x63, (byte)0x65};
String nfcservicestring = new String(TEMP_MSG);
Intent intent = new Intent("com.android.apps.metromanager.MetroManagerActivity");
intent.putExtra("keyword", nfcservicestring);
startActivity(intent);
App-A代码:
public class MetroManagerActivity extends Activity
{
TextView myText;
String myString;
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_metro_manager);
Bundle bundle = getIntent().getExtras();
if(bundle!=null) {
myString = bundle.getString("keyword");
Toast.makeText(getApplicationContext(), myString, Toast.LENGTH_LONG).show();
if(myString.equals("nfcservice")) {
LinearLayout lView = new LinearLayout(this);
myText = new TextView(this);
myText.setText("Welcome");
lView.addView(myText);
setContentView(lView);
} else {
LinearLayout lView = new LinearLayout(this);
myText = new TextView(this);
myText.setText("Bye Bye");
lView.addView(myText);
setContentView(lView);
}
}
}
}
答案 0 :(得分:0)
我不知道这是你输入的错误,但字节数组表达式错误:
byte[] TEMP_MSG = { (byte)0x,(byte)0x6E, ...};
第一个表达式(字节)0x,
中存在错误从那里开始,如果你不能在捆绑包中找到字符串,你将在代码中有一个NPE:
if(myString.equals("nfcservice"))
{
...
}
最好像这样检查平等:
if ("nfcservice".equals(myString)) {
}
答案 1 :(得分:0)
你的字节初始化有一个错误,你有第5个字节:
, byte)0x65,
而不是:
,(byte)0x65,
但是,为什么不尝试从bundle对象中获取其他属性,并通过调试和观察来检查它们?