我可以将活动别名用作NFC标签上的AAR字段吗?

时间:2013-11-18 15:14:35

标签: android nfc ndef android-applicationrecord android-activity-alias

我试过这样做:

<application android:label="@string/app_name" >
    <activity android:name="com.blablabla.NfcLauncherActivity"
        android:label="@string/app_name"
        android:theme="@android:style/Theme.NoDisplay">
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />
            <action android:name="android.nfc.action.NDEF_DISCOVERED" />
            <category android:name="android.intent.category.DEFAULT" />
            <category android:name="android.intent.category.LAUNCHER" />
            <data android:mimeType="text/plain" />
        </intent-filter>
    </activity>

    <activity-alias
        android:enabled="true"
        android:exported="true"
        android:label="an alias"
        android:name=".AnAlias"
        android:targetActivity="com.blablabla.NfcLauncherActivity">
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />
            <action android:name="android.nfc.action.NDEF_DISCOVERED" />
            <category android:name="android.intent.category.DEFAULT" />
            <category android:name="android.intent.category.LAUNCHER" />
            <data android:mimeType="text/plain" />
        </intent-filter>
    </activity-alias>

如果我在标签中将com.blablabla写为AAR,一切正常,但如果我写的话.AnAlias只是带我去Play商店。我试图在实际活动中删除意图(事实上,我已经尝试了所有意图的组合)并且仍然存在同样的问题。

我做错了什么,或者我只是误解了别名的用例?

1 个答案:

答案 0 :(得分:0)

不,AAR只能指定应用程序包名称,而不能指定特定活动(或活动别名)的名称。

但是,您通常会将额外的NDEF记录作为标记上的第一条记录,例如外部类型记录。然后,您可以设置activity-alias的intent-filter以过滤该外部类型:

如果您的外部类型是blablabla.com:mytype,则您的活动别名需要具有以下意图过滤器:

<intent-filter>
    <action android:name="android.nfc.action.NDEF_DISCOVERED" />
    <category android:name="android.intent.category.DEFAULT" />
    <data android:scheme="vnd.android.nfc"
        android:host="ext"
        android:pathPrefix="/blablabla.com:mytype" />
</intent-filter>