0

シナリオを考えてみましょう。AとBのように2つのAndroidアプリを作成しました。BはNFCタグをスキャンし、文字列「nfcservice」を保存し、その文字列をバイト配列に保存しました。たとえば、TEMP_MSGを16進数として保存しました。その後、その配列を文字列に変換して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);

アプリ-コード:

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);
            }
        }
    }
}
4

2 に答える 2

0

タイピングのバグかどうかはわかりませんが、バイト配列の式が間違っています。

byte[] TEMP_MSG = { (byte)0x,(byte)0x6E, ...}; 

最初の式(byte)0xにバグがあります。

それから、バンドル内の文字列を取得できない場合は、コードにNPEが含まれます。

if(myString.equals("nfcservice"))
{
...
}

次のように同等性を確認することをお勧めします。

if ("nfcservice".equals(myString)) {

}
于 2013-01-17T17:33:43.007 に答える
0

バイトの初期化に障害があります。5番目のバイトに次のような問題があります。

 , byte)0x65,

それ以外の:

  ,(byte)0x65,

ただし、バンドルオブジェクトから他の属性を取得し、デバッグと監視によってそれらを調べてみませんか?

于 2013-01-18T15:20:00.220 に答える