2012-02-01 95 views
1

我正在嘗試構建一個應用程序來替換Android上的默認操作。問題是,當執行操作時,我得到「選擇操作」對話框,沒有複選框將其選爲默認值。我想我應該得到「完成操作使用」對話框(反過來有複選框)。我不明白我如何讓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

意圖過濾器的工作方式是,PackageManager將所有這些應用程序通過每個應用程序找到的清單註冊到它。特別是當應用程序落入某個Intent-Filter時,它將被添加到具有在其清單中聲明的​​那些類型的Intent-Filters的應用程序列表中。

例如說我的應用程序,處理:Intent.ACTION_SEND這意味着我的應用程序將顯示在手部特定動作的應用程序列表中。其中包括默認的MMS/SMS應用程序和用戶擁有的任何其他應用程序,包括MY應用程序(如果用戶已安裝該應用程序)。

你應該從理解甚至意味着「默認行爲」開始。理解這將幫助你如何解決你的問題。

供您參考:

Intent

Intent.CATEGORY_DEFAULT

+0

我不確定你是否理解我的問題。我的應用程序在默認操作列表中。問題出現在我應該執行操作時的選擇對話框中。通常你會得到:「完成操作使用」對話框。但是我得到了「選擇操作」對話框。不同之處在於後者沒有選擇默認應用程序的複選框。我的問題是爲什麼我得到「選擇...」對話框而不是「完整...」對話框。 – sposnjak 2012-02-01 09:36:04

+0

發佈開始這個對話框的代碼,那麼也許我們會得到我們的答案。 – JoxTraex 2012-02-01 09:39:46

+0

當android.nfc.action.TECH_DISCOVERED動作發生時,此對話框由Android OS啓動。請參閱:http://shrani.si/f/2U/5D/1IMhNENB/device-2012-02-01-094703.png – sposnjak 2012-02-01 11:02:21

0

我不相信什麼是錯的。我不相信NFC意圖是爲了擁有一個默認的應用程序,除非您對Ndef格式化的卡有特別的意圖過濾。我爲我的工作做了這個,因爲我們只需要我們的應用程序就可以用我們的標籤彈出。否則它會一直在列表中(這很煩人)。