2012-12-21 64 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