NFCタグを読み取っているxamarinアプリがあります。アプリが開いているときは正常に動作しますが、アプリがバックグラウンドであるか閉じている場合は、タグからデータを読み取ることができません。アプリの外部からNFCタグを読み取るとデータが返されない
私のインテントフィルタ:
[IntentFilter(
new[] {"android.nfc.action.NDEF_DISCOVERED", "android.intent.action.VIEW", "android.intent.action.MAIN"},
Categories =
new[]
{
"android.intent.category.DEFAULT", "android.intent.category.BROWSABLE",
"android.intent.category.LAUNCHER"
},
DataScheme = "http", DataHost = "app.myDomain.com")]
アプリ外からスキャンしたときに、私のOnNewIntentで、私のintent.Dataは常にnullとして戻って来ています。私の問題がどこにあるのか考えていますか?
OnResume:
nfcAdapter.EnableForegroundDispatch(this, nfcPendingIntent, nfcIntentFiltersArray, null);
OnNewIntent:
protected override void OnNewIntent(Intent intent)
{
if (AndroidNFCHelper.isNfcIntent(intent))
{
DisplayMessage("And it is an NFC intent");
}
var tag = intent.GetParcelableExtra(NfcAdapter.ExtraTag) as Tag;
if (tag == null)
{
Debug.WriteLine("tag is null");
return;
}
//rest of OnNewIntent code...
}
ので興味深い、アプリの外でスキャンしたときに、AndroidNFCHelper.isNfcIntentが戻っとして偽きます。同じNFCタグがアプリでスキャンされると、それは真実に戻ります。続けて、タグはnullとして終了し、return文にヒットします。アプリでスキャンされると、タグはnullではなく、引き続きオンになります。
PrepareForegroundNFCHandling - )(OnCreate関数で呼び出されます:
private void PrepareForegroundNFCHandling()
{
var tagDetected = new IntentFilter(NfcAdapter.ActionTagDiscovered);
var ndefDetected = new IntentFilter(NfcAdapter.ActionNdefDiscovered);
nfcIntentFiltersArray = new[] { ndefDetected, tagDetected};
var intent = new Intent(this, GetType()).AddFlags(ActivityFlags.SingleTop | ActivityFlags.BroughtToFront);
nfcPendingIntent = PendingIntent.GetActivity(this, 0, intent, 0);
nfcAdapter = NfcAdapter.GetDefaultAdapter(Application.ApplicationContext);
}
どのデータ(NDEFメッセージ)をタグに保存しましたか?あなたのアプリが閉じている間(またはバックグラウンドで)タグをタップすると、アクティビティが開かれますか? OnCreate()、OnStart()、OnResume()にはどのようなコードがありますか?あなたはOnNewIntent()で何を見ますか? –
URLはhttp://app.myDomain.com/p/9のようなものです。アプリを閉じたままタップするとアプリが開かれますが、タグオブジェクトが最終的にnullに戻るため、何も起こりません。投稿を他のコードで更新します – Arthurdent510
コードのどこからでもOnNewIntent()を呼び出しますか?あなたのタグにはURL付きのNDEFレコードが1つだけ含まれていて、あなたのアプリパッケージ名にはAndroidアプリケーションレコードが含まれていませんか? –