(Nexus Sで4.1.1 JellyBeanを使用)これらの指示に従おうとしていますが、アクティビティsetNdefPushMessage()
を使用できる制限はやや曖昧です。現在、私のアプリには、次の方法で http リクエストを処理するためのアクティビティがあります。
<activity android:name=".HandleUrlActivity"
android:label="@string/title_handle_url_message" >
<intent-filter>
<action android:name="android.intent.action.VIEW" /
<category android:name="android.intent.category.DEFAULT" />
<data android:scheme="http" />
</intent-filter>
</activity>
次でクラッシュします:
java.lang.IllegalStateException: API cannot be called while activity is paused
SetNdefPushMessage() が HandleUrlActivity() 内で呼び出されたとき。
setNdefPushMessage() はどのアクティビティで使用できますか? または、Ndef が提供されるまでアクティビティを実行し続けるにはどうすればよいですか? また、そのアクティビティがいつ復帰/終了できるかを知るにはどうすればよいですか? 呼び出し:
NfcAdapter nfcAdapter = NfcAdapter.getDefaultAdapter(this);
nfcAdapter.setNdefPushMessage(ndef, this);
nfcAdapter.wait();
待機の有無にかかわらず、上記のエラーが発生します。明らかsetNdefPushMessage()
に、wait-for-nfc-receive-capable-device-proximity を処理してからイベントを送信するためのサポート メカニズムが必要であり、すべてが完了するまでブロックすると予想していましたが、明らかにそうではありません。
(enableForegroundNdefPush/disableForegroundNdefPush
明らかにこの問題に対処しましたが、これらすべてを処理するという主張により、ICS / JBでは廃止されたようsetNdefPushMessage
です...)