我知道我们可以使用隐含意图打开浏览器活动:
<activity ...>
<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" />
</intent-filter>
</activity>
但是现在我想点击链接时打开浏览器服务来在后台加载网页,所以我这样做:
<service ...>
<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" />
</intent-filter>
</service>
但是无法正常工作,应用选择器没有出现且浏览器服务没有运行。
来自Intent | Android Developers它说&#34; android.intent.action.VIEW&#34;是一个活动,我可以在服务中使用它吗?
或者有任何想法以隐式意图启动浏览器服务吗?
答案 0 :(得分:1)
经过几天的思考,我发现了一种&#34; hack方式&#34;实施这个解决方案。
只需将活动主题设置为android:theme="@android:style/Theme.NoDisplay"
,当隐含意图到达活动开始时,我们只会在onCreate()
startService()
中执行某些操作,例如finish()
和然后只是{{1}}这项活动。
整个过程运行速度非常快,经验丰富,看起来很棒:)。
答案 1 :(得分:0)
是的,活动操作必须是活动。此外,您不应将意图过滤器与服务一起使用。它可能但高度,高度气馁。来自文档
&#34;注意:为确保您的应用安全,请始终使用明确的意图 启动服务时,不要为您的声明声明意图过滤器 服务。使用隐式意图启动服务是一种安全性 危险,因为你不能确定什么服务会响应 意图,用户无法查看哪些服务启动。以。。。开始 Android 5.0(API级别21),如果您调用,系统会抛出异常 bindService()具有隐式意图。&#34;
答案 2 :(得分:0)
Intent imintent = new Intent(Intent.ACTION_VIEW,Uri.parse(“http:\ www.google.com”));
试
{
startActivity(imintent);
} catch(ActivityNotFoundException a)
{ }
您可以使用此代码隐式启动浏览器活动。 Androidmanifeast文件中不需要进行任何更改。