0

我试图这样做:

<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 商店。我试图在实际活动中删除意图(事实上,我已经尝试了所有意图的组合),但仍然存在同样的问题。

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

4

1 回答 1

0

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

但是,您通常会将附加的 NDEF 记录作为标签上的第一条记录,例如外部类型记录。然后,您可以设置活动别名的意图过滤器来过滤该外部类型:

如果您的外部类型是 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>
于 2013-11-19T10:19:50.843 回答