0

当手机读取标签时,我需要选择我的活动。我的应用程序应该在活动选择器上可见。

在我的活动清单文件中,我有

        <activity android:name=".WaitingPayment" android:noHistory="true"
        android:theme="@android:style/Theme.NoTitleBar"
        android:screenOrientation="portrait" android:label="@string/app_name">
        <intent-filter>
            <action android:name="android.nfc.action.NDEF_DISCOVERED" />
            <data android:mimeType="*/*" />
            <category android:name="android.intent.category.DEFAULT" />
        </intent-filter>
    </activity>

在活动课上,我有:

nfcAdapter = NfcAdapter.getDefaultAdapter(this);

    pendingIntent = PendingIntent.getActivity(this, 0, new Intent(this, getClass()).addFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP), 0);
    ndef = new IntentFilter(NfcAdapter.ACTION_NDEF_DISCOVERED);
    try {
        ndef.addDataType("*/*");    /* Handles all MIME based dispatches. 
                                       You should specify only the ones that you need. */
    }
    catch (MalformedMimeTypeException e) {
        throw new RuntimeException("fail", e);
    }
    this.intentFiltersArray = new IntentFilter[] {ndef};
    this.techListsArray = new String[][] { new String[] { MifareUltralight.class.getName(), Ndef.class.getName(), NfcA.class.getName()}};

我可以做些什么来查看我在活动选择器上的标签并处理它?我的标签是一个 URI

谢谢

4

3 回答 3

0

Your code is using foreground dispatching, which is unnecessary. Just use the intent filter. If your application is the only one filtering for that URI, it will launch automatically. If there are multiple applications that can handle the URI, your app will appear in the activity launcher. You do not need the second code snippet, just the snippet in Ben's answer and modify it for your URI.

于 2011-12-21T22:56:34.757 回答
0

仅当有超过 1 个应用程序具有相同的意图过滤器时才会出现活动选择器。当您将 Uri 写入您的标签时,您应该使用

<intent-filter>
<action android:name="android.nfc.action.NDEF_DISCOVERED"/>
<category android:name="android.intent.category.DEFAULT"/>
<data android:scheme="http"
     android:host="developer.android.com"
     android:pathPrefix="/index.html" />
</intent-filter>
于 2014-04-13T15:05:08.373 回答
0

你可以试试这个 URI:

<intent-filter>
    <action android:name="android.nfc.action.NDEF_DISCOVERED" />
    <category android:name="android.intent.category.DEFAULT" />
    <data android:scheme="http"
        android:host="developer.android.com"
        android:pathPrefix="/index.html" />
</intent-filter>

这将是检测 URI 类型 Ndef 的适当方法。您的代码正在寻找 MIME 类型。要寻找的最重要的事情是您拥有的 Ndef 记录的类型。

您可以使用此链接了解这方面的更多信息:http: //developer.android.com/guide/topics/nfc/nfc.html

于 2011-11-04T20:36:25.573 回答