菜单
  

    ComponentName,顾名思义,就是组件名称,通过调用Intent中的setComponent方法,我们可以打开另外一个应用中的Activity或者服务。

    componentname使用方法

    实例化一个ComponentName需要两个参数,第一个参数是要启动应用的包名称,这个包名称是指清单文件中列出的应用的包名称
    componentname使用方法

    第二个参数是你要启动的Activity或者Service的全称(包名+类名),代码如下:

     

    启动一个Activity:
     

    componentname使用方法
    启动一个Service:
    componentname使用方法

    注意

    如果你要的启动的其他应用的Activity不是该应用的入口Activity,那么在清单文件中,该Activity节点一定要加上android:exported="true",表示允许其他应用打开,对于所有的Service,如果想从其他应用打开,也都要加上这个属性:

       <service

                android:name="com.example.otherapp.MyService"

                android:exported="true" >

            </service>

     

            <activity

                android:name="com.example.otherapp.MainActivity2"

                android:exported="true" >

            </activity>

    对于除了入口Activity之外的其他组件,如果不加这个属性,都会抛出“java.lang.SecurityException: Permission Denial.....”异常

    那么为什么入口Activity不用添加这个属性就可以被其他应用启动呢?我们来看一段入口Activity的注册代码:

      <activity

                android:name=".MainActivity"

                android:label="@string/app_name" >

                <intent-filter>

                    <action android:name="android.intent.action.MAIN" />

     

                    <category android:name="android.intent.category.LAUNCHER" />

                </intent-filter>

            </activity>

    入口Activity和普通Activity唯一不同的地方就是入口Activity多了一个过滤器论文网,对于包含了过滤器的组件,意着该组件可以提供给外部的其他应用来使用,它的exported属性默认为true,相反,如果一个组件不包含任何过滤器,那么意着该组件只能通过指定明确的类名来调用,也就是说该组件只能在应用程序的内部使用,在这种情况下,exported属性的默认值是false。

  1. 上一篇:LTC莱特币挖矿教程
  2. 下一篇:dfsdf是什么意思dfsdf
  1. MATLAB中normrnd函数的使用方法

  2. C#的savefiledialog路径使用方法

  3. 上市公司债务税盾文献综述和参考文献

  4. 小学课堂教学效率国内外研究现状和参考文献

  5. PLC焊机电气控制系统设计开题报告

  6. Bootstrap的OpenGL人体模型仿真

  7. 多智能体系统一致性问题研究

  8. 跨国企业全球营销策略的市场定位调查

  9. 友谊质量调查问卷表

  10. PLC启闭机液压系统设计及其故障诊断

  11. 淮安乐天玛特连锁超市4P营销策略分析

  12. MATLAB动车组列车牵引变流...

  

About

751论文网手机版...

主页:http://www.751com.cn

关闭返回