自定义类别或操作的目的是什么?

Shr*_*ers 5 android android-manifest

我正在阅读Wei-Mung Lee开始的Android应用程序开发.我对自定义操作和类别感到困惑.

这是一个例子中的一些代码.该操作是包名称.它再次被提到的唯一一次就是

Intent i = new Intent( "net.learn2develop.MyBrowser" );
Run Code Online (Sandbox Code Playgroud)

开始一项活动.这个基本上是包名的动作怎么能知道开始活动呢?只是因为它在活动标签内?

与category标签相同的事情(不同的例子):

<intent-filter>
   <action android:name=”android.intent.action.VIEW” />
   <action android:name=”net.learn2develop.MyBrowser” />
   <category android:name=”android.intent.category.DEFAULT” />
   <category android:name=”net.learn2develop.Apps” />
   <data android:scheme=”http” />
</intent-filter>
Run Code Online (Sandbox Code Playgroud)

net.learn2develop.Apps是由作者组成的名称.它真的没有意义,对吗?它有什么用途?

Com*_*are 8

这个基本上是包名的动作怎么能知道开始活动呢?

因为<intent-filter>广告宣传它可以通过该动作字符串启动.顺便说一句,仅仅因为它被写成包名并不意味着它必须是包名(例如,android.intent.action.VIEW不是包).程序包命名约定是为了防止与其他已安装的应用程序意外冲突.

它真的没有意义,对吗?

嗯,它可能对作者意味着什么,虽然我无法告诉你究竟是什么.

它有什么用途?

在正常的Android开发中,您不会创建自定义类别.我不记得曾见过一个人,而且我已经做了很长一段时间的Android开发.

类别通常用于区分不同的用例.比如,也许是第二个最流行的类别之外DEFAULTBROWSABLE.支持该类别中的VIEW操作的活动有BROWSABLE资格从Web浏览器中的链接使用.因此,如果我有一个VIEW/ BROWSABLE和MIME类型的活动application/pdf,并且用户在浏览器中点击了指向PDF文件的链接,我可以选择查看PDF.但是,如果我缺少BROWSABLE一个类别,那么我就没有资格获得该链接.通常,活动只会BROWSABLE在它可以检索HTTP URL时进行通告.

不过,我无法想到我会使用自定义类别的场景.