gpt4 book ai didi

Android NFC 启动屏幕

转载 作者:行者123 更新时间:2023-11-30 04:17:24 25 4
gpt4 key购买 nike

当我点击我的应用程序上的按钮时,我正在尝试读取 NFC 标签。目前我能够在默认模式下检测到标签(Nexus 手机中安装的标签应用程序)。但我无法显示我想启动我的标签的 Activity 选择器

public class NFC_button extends Activity
{

protected IntentFilter ifilter ;
private NfcAdapter adapter;

private BroadcastReceiver receiver = new BroadcastReceiver()
{

@Override
public void onReceive(Context context, Intent intent)
{

if(NfcAdapter.ACTION_NDEF_DISCOVERED.equals(intent.getAction()))
{
Parcelable[] messages = intent.getParcelableArrayExtra(NfcAdapter.EXTRA_NDEF_MESSAGES);
NdefMessage[] ndefmessages;
if(messages != null)
{
ndefmessages = new NdefMessage[messages.length];

for(int i = 0;i<messages.length;i++)
{
ndefmessages[i] = (NdefMessage)messages[i];
}



}

}

}
};

@Override
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
adapter=NfcAdapter.getDefaultAdapter(this);


ifilter = new IntentFilter();
ifilter.addAction("android.nfc.action.NDEF_DISCOVERED");
ifilter.addCategory("android.intent.category.LAUNCHER");

}



@Override
protected void onResume() {
registerReceiver(receiver, ifilter);

super.onResume();
}




}

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.nfc.example"
android:versionCode="1"
android:versionName="1.0" >

<uses-permission android:name="android.permission.NFC"/>
<uses-feature android:name="android.hardware.nfc" android:required="true"/>

<uses-sdk android:minSdkVersion="10"/>

<application

android:icon="@drawable/ic_launcher"
android:label="@string/app_name" >
<activity
android:name=".NFC_ExampleActivity"
android:label="@string/app_name" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>

<activity android:name=".NFC_button">

</activity>

</application>

最佳答案

首先,我不认为 BroadcastReciver 是读取标签的正确方法。我看到的另一个错误是您的 Intent 过滤器有一个类别:

android.intent.category.LAUNCHER

但正确的类别应该是:

android.intent.category.DEFAULT

我建议您将 Intent 过滤器添加到您想要在触摸标签时启动的 Activity 的 list 中,如下所示:

<activity android:name=".NFC_button">
<intent-filter >
<action android:name="android.nfc.action.NDEF_DISCOVERED"/>
<category android:name="android.intent.category.DEFAULT"/>
</intent-filter>
</activity>

并将 BroadcastReceiver 的 onReceive 方法中的代码移动到 NFC_button Activity 的 onCreate。

如果没有特定原因您想使用 BroadcastReceiver,这将解决您的标签读取问题。

关于Android NFC 启动屏幕,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9775475/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com