2012-12-21 63 views
2

我有一個Web服務,它使用自定義Mime類型提供配置文件。我想在用戶點擊鏈接時使用intent-filter啓動我的活動。它在所有Android版本上工作得很好,但在4.2(API級別17)中不起作用。 這是我的Manifest.xml在API級別17上從android瀏覽器啓動活動

 <activity android:name="activityName" 
       android:screenOrientation="nosensor" 
       android:theme="@style/Theme.Sherlock.NoActionBar" 
       android:exported="true"> 
     <intent-filter> 
      <action android:name="android.intent.action.VIEW" /> 
      <category android:name="android.intent.category.DEFAULT" /> 
      <category android:name="android.intent.category.BROWSABLE" /> 
      <data android:scheme="http" /> 
      <data android:scheme="https" /> 
      <data android:mimeType="application/vnd.xxx.yyy"/> 
     </intent-filter> 
    </activity> 

任何想法?

+0

這應該適用於Android 4.2,假設你的應用程序已經在設備上運行。你可以嘗試擺脫'nosensor'的東西,看看是否有幫助。否則,請創建一個可重現錯誤的示例項目 - 我希望對其進行研究。 – CommonsWare

+0

我在真實設備和模擬器上使用了相同的代碼,相同的apk,它具有相同的結果:它適用於android版本<4.2,它不適用於android 4.2(.1)。明天我會嘗試創建一個示例應用程序(我可以上傳t?) – Sarbyn

+0

「哪裏可以上傳t?」 - GitHub,您網站上的ZIP文件等。 – CommonsWare

回答

1

,. 只需將android:launchMode =「singleTask」添加到清單中即可。對於Android 4.2中的一些奇怪的原因,該標誌是強制性的.....

0

那麼,你的應用程序在4.2硬件上工作(在Galaxy Nexus上測試)。它會短暫地彈出瀏覽器(我在4.1 x86模擬器上沒有注意到,儘管它可能太快)。但是,控制權將傳遞給您的活動。

我的猜測是瀏覽器中存在一個錯誤,導致該問題在模擬器上實現。這就是說,如果這真的是某種專有的配置文件,我會建議你在你的應用程序中處理下載。不要讓人們點擊TextView -as-hyperlink或WebView,而是在您自己的應用程序中提供配置文件列表,並自己使用HttpUrlConnection(或HttpClient)下載它。

+0

不止一次嘗試測試應用程序。在第一次運行它的作品....但其他點擊不起作用。我用真實的設備和股票瀏覽器,鉻和海豚再次嘗試:它不起作用。不關心textview鏈接:這是一個演示應用程序。在真正的應用程序中,鏈接由短消息傳遞 – Sarbyn

+0

我現在已經運行了十次。它已經工作了十次。可用性很糟糕,因爲從您的自定義MIME類型處理活動中按下BACK將返回到瀏覽器(在我的情況下爲Chrome),並且您必須向我們提供最近的任務列表才能返回到您的「LAUNCHER」活動。我對自己做HTTP的評論,而不是依靠瀏覽器站。 – CommonsWare