我正在尝试构建一个替代Android上默认操作的应用程序。问题是,当应该执行操作时,我得到“选择操作”对话框,没有复选框,将其选为默认值。我想我应该得到“使用完整行动”对话框(反过来又有复选框)。我不明白如何让Android为我提供“完整......”对话框。我的清单文件如下:
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="si.cetrtapot.mobiris"
android:versionName="1.0"
android:versionCode="1" >
<uses-sdk android:minSdkVersion="10" />
<uses-permission android:name="android.permission.NFC" />
<uses-feature android:name="android.hardware.nfc"
android:required="true" />
<application android:icon="@drawable/ic_launcher"
android:label="@string/app_name"
android:debuggable="true" >
<activity android:name=".ReadTagActivity"
android:label="@string/app_name"
android:screenOrientation="portrait" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
<intent-filter>
<action android:name="android.nfc.action.TECH_DISCOVERED" />
<category android:name="android.intent.category.DEFAULT"/>
</intent-filter>
<meta-data android:name="android.nfc.action.TECH_DISCOVERED"
android:resource="@xml/nfc" />
</activity>
</application>
</manifest>
有人可以告诉我出了什么问题吗?
答案 0 :(得分:0)
intent-filters的工作方式是PackageManager通过每个应用程序找到的Manifest将所有这些应用程序注册到它。特别是当一个应用程序不属于某个Intent-Filter时,它将被添加到具有在其Manifest中声明的那种Intent-Filters的应用程序列表中。
比如说我的应用程序,处理:Intent.ACTION_SEND这意味着我的应用程序将显示在应用特定操作的应用程序列表中。其中包括默认的MMS / SMS应用程序以及用户拥有此应用程序的任何其他应用程序,包括 MY 应用程序(如果用户已安装)。
您应该首先了解“默认操作”的含义。了解这一点将有助于您解决问题。
供您参考:
答案 1 :(得分:0)
我不相信有什么不对。除非你对Ndef格式化卡片进行非常具体的意图过滤,否则我认为NFC意图不具备默认应用程序。我为我的工作做了这个,因为我们只想让我们的应用程序弹出我们的标签。否则它将一直在列表中(这很烦人)。