遵循How to add my browser in the default browser selection list in android?的建议。我在Intent
文件中指定了manifest
:
<intent-filter>
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.DEFAULT" />
<data android:scheme="http"/>
<data android:scheme="https"/>
</intent-filter>
我还添加了权限:
<uses-permission android:name="android.permission.INTERNET"></uses-permission>
但是,我的浏览器仍未显示在设置中浏览器类别的默认应用程序选项中。
我是否需要做其他事情才能使我的应用显示在浏览器的默认选项中?
答案 0 :(得分:11)
尝试将<category android:name="android.intent.category.BROWSABLE" />
包括在目标活动的intent-filter
中,如developer documentation所说:
如果用户正在查看网页或电子邮件,然后单击文本中的链接,则生成的Intent执行该链接将需要
BROWSABLE
类别,因此仅支持该类别的活动为被认为是可能的行动。
要通过可点击的链接访问intent-filter
,这是必需的。没有它,单击链接将无法解析到您的应用。
<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>
。
Android App Links允许应用程序将自身指定为给定类型的链接的默认处理程序。如果用户不希望该应用成为默认处理程序,则可以从其设备的系统设置中覆盖此行为。
要为您的应用启用链接处理验证,请在android:autoVerify="true"
标签中设置intent-filter
:
<activity ...>
<intent-filter android:autoVerify="true">
...
</intent-filter>
</activity>
答案 1 :(得分:0)
使用Android清单文件中的以下代码,使Intent-Filter
可浏览,即可使用Activity
来实现此功能。
您可以通过Launcher
活动来做到这一点。
<activity android:name="BrowsableActivity">
<intent_filter>
<action android:name="android.intent.action.VIEW"/>
<category android:name="android.intent.category.BROWSABLE"/>
<category android:name="android.intent.category.DEFAULT"/>
<category android:name="android.intent.category.LAUNCHER"/>
</intent_filter>
</activity>
并且您必须提供scheme
作为http
和https
,以便使用您的应用程序打开链接。
答案 2 :(得分:0)
如developer.android.com上的文档中所述
您需要按以下方式设置意图文件器
<activity ...>
<intent-filter>
<action android:name="android.intent.action.VIEW" />
<!-- Include the host attribute if you want your app to respond
only to URLs with your app's domain. -->
<data android:scheme="http" android:host="www.example.com" />
<category android:name="android.intent.category.DEFAULT" />
<!-- The BROWSABLE category is required to get links from web pages. -->
<category android:name="android.intent.category.BROWSABLE" />
</intent-filter>
</activity>
答案 3 :(得分:0)
您需要考虑各种可能适用的情况。
请参考下面的意图过滤器。末尾还提供了链接。
<activity android:name="BrowserActivity"
android:label="@string/application_name"
android:launchMode="singleTask"
android:alwaysRetainTaskState="true"
android:configChanges="orientation|keyboardHidden"
android:theme="@style/BrowserTheme"
android:windowSoftInputMode="adjustResize" >
<intent-filter>
<action android:name="android.speech.action.VOICE_SEARCH_RESULTS" />
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
<!-- For these schemes were not particular MIME type has been
supplied, we are a good candidate. -->
<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:scheme="about" />
<data android:scheme="javascript" />
</intent-filter>
<!-- For these schemes where any of these particular MIME types
have been supplied, we are a good candidate. -->
<intent-filter>
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.BROWSABLE" />
<category android:name="android.intent.category.DEFAULT" />
<data android:scheme="http" />
<data android:scheme="https" />
<data android:scheme="inline" />
<data android:mimeType="text/html"/>
<data android:mimeType="text/plain"/>
<data android:mimeType="application/xhtml+xml"/>
<data android:mimeType="application/vnd.wap.xhtml+xml"/>
</intent-filter>
<!-- We are also the main entry point of the browser. -->
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.DEFAULT" />
<category android:name="android.intent.category.LAUNCHER" />
<category android:name="android.intent.category.BROWSABLE" />
</intent-filter>
<!-- The maps app is a much better experience, so it's not
worth having this at all... especially for a demo!
<intent-filter android:label="Map In Browser">
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.DEFAULT" />
<data android:mimeType="vnd.android.cursor.item/postal-address" />
</intent-filter>
-->
<intent-filter>
<action android:name="android.intent.action.WEB_SEARCH" />
<category android:name="android.intent.category.DEFAULT" />
<category android:name="android.intent.category.BROWSABLE" />
<data android:scheme="" />
<data android:scheme="http" />
<data android:scheme="https" />
</intent-filter>
<intent-filter>
<action android:name="android.intent.action.MEDIA_SEARCH" />
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
<intent-filter>
<action android:name="android.intent.action.SEARCH" />
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
<meta-data android:name="android.app.searchable"
android:resource="@xml/searchable" />
</activity>
查看可能需要的不同类型的意图过滤器,以涵盖所有可能的情况。
请参阅此link-froyo浏览器的完整清单文件。
答案 4 :(得分:0)
考虑将CATEGORY_APP_BROWSER
与主过滤器一起使用:
与
ACTION_MAIN
一起使用以启动浏览器应用程序。该活动应该能够浏览Internet。
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
<category android:name="android.intent.category.APP_BROWSER" />
</intent-filter>
答案 5 :(得分:0)
您可以通过编程方式实现这一目标,例如:
Intent share = new Intent(android.content.Intent.ACTION_SEND);
share.setType("text/plain");
share.addFlags(Intent.FLAG_ACTIVITY_CLEAR_WHEN_TASK_RESET);
share.setPackage("your.app.package.name");
startActivity(share);
如果在手机上检查该应用程序的存在,那也很好。
快乐编码:)