Android 隐藏程序的图标


文章参考自:

http://www.sgblog.net/?p=310

http://blog.163.com/fan_jianglong@126/blog/static/5617053620131553010605/

很多时候我们在开发中为了满足程序的特别要求,往往一个程序会分解为多个apk,启动其他程序的程序我这里暂且称之为主程序,被启动的程序我这里暂且称之为子程序。通常主程序通过ComponentName指定要子程序被标记为 <category android:name="android.intent.category.LAUNCHER" />的类,使用StartActivtit(intent)来启动或者调用子程序,很常见的应用是:手机QQ在查看好友动态启动手机QQ空间。有的时候我们的子程序可能被希望不被用户主动启动(通过点击图标,启动程序)而仅能被主程序启动,常见的做法是将子程序程序图标隐藏起来,用户自然无法点击启动程序。

那么究竟要如何做才能达到既能被主程序启动,又能隐藏起来呢,其实很简单,下面就是实现的方法:


在manifest的入口activity里面intent-filter中设置<data></data>元素。


比如:

<data android:host=”AuthActivity” android:scheme=”com.android.example” />
注意,android:scheme是大小写敏感的,必须以小写字母开头
也就是这个MainActivity可以响应Uri为com.android.example://AuthActivity的特定 Intent
但是为什么加入这个之后app就不显示图标了呢?
因为我们把app的入口Activity申明为由接收隐匿的Intent来启动,这样自然也就不会显示图标了。
好了,如果需要显示图标的话而且也必须响应上述Uri的话,那么我们可以在该Activity中再加入一个intent-filter标签,将data元素移到新建的标签中。这样应用既可以显示图标又可以响应特定的Uri了。


//假设有程序A调用程序B,程序B图标隐藏不可见

则有:程序A中:

	public void starAct()
	{
		Intent intent = new Intent( );	 
		ComponentName cn = new ComponentName("com.key.poc", "com.key.poc.MainActivity");              
		intent.setComponent(cn);  
		 Uri uri=Uri.parse("com.key.poc.MainActivity");//此处应与B程序中Data中标签一致
	     intent.setData(uri);	 
		startActivity(intent);
	}

则程序B中Mainifest.xml配置为:

  <activity
            android:name=".MainActivity"
            android:label="@string/app_name" >
            <intent-filter>              
             <action android:name="android.intent.action.MAIN" />       
                
                <data
                    android:host="MainActivity"
                    android:scheme="com.key.poc" />
            </intent-filter>
        </activity>





  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值