1,Android程序隐藏程序图标

在AndroidManifest中application节点下面intent-filter里面加入下面语句
<data
android:host="MainActivity"
android:scheme="com.zhangton.monitor" />
android:scheme后面的是包名。android:host是活动首页。这种隐藏的方式在手机应用中还可以找到。

2,android无界面app开机启动Service

对于一个没有Activity的app,直接安装后,开机是不会启动Service的;如果推送进system/app,则开机会启动。
为什么直接安装就不会呢?因为Android 3.1以后Boot_COMPLETED广播收不到。

在3.1之后,系统的package manager增加了对处于“stopped state”应用的管理,这个stopped和Activity生命周期中的stop状态是完全两码事,指的是安装后从来没有启动过和被用户手动强制停止的应用,与此同时系统增加了2个Flag:FLAG_INCLUDE_STOPPED_PACKAGES和FLAG_EXCLUDE_STOPPED_PACKAGES,来标识一个intent是否激活处于“stopped state”的应用。当2个Flag都不设置或者都进行设置的时候,采用的是FLAG_INCLUDE_STOPPED_PACKAGES的效果。

有了上面的新机制之后,google觉得给所有的广播intent默认加上FLAG_EXCLUDE_STOPPED_PACKAGES会非常的Cooooool,能在一定程度上避免流氓软件、病毒啊干坏事,还能提高效率,就导致了本文题目中说的问题,RECEIVE_BOOT_COMPLETED广播如果用户没有运行过应用,就不会响应了。

不过google还是留了点余地,允许应用和后台服务通过给广播intent设置FLAG_INCLUDE_STOPPED_PACKAGES来唤醒处于“stopped state”的程序,也就是用户自己写的广播intent可以控制这个机制,但是系统自带的广播intent,由于不能修改,就只能接受这个现实了。

解决方案:定制系统,修改framework,把系统发bootcompleteIntent的地方改一下,在intent里设上FLAG_EXCLUDE_STOPPED_PACKAGES,那样在这个系统里,你的APP就可以开机启动了.

3,如何获取MainActivity实例

传对象:

Java code ?
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 public class MainActivity extends Activity { …… public void anotherClass() { AnotherClassactivity= new AnotherClass( this ); } } public class AnotherClass { private MainActivityactivity; public AnotherClass(MainActivityactivity) { this .activity=activity; } }


传接口:
Java code ?
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 public interface IActivity { //与Activity里同名同参数的方法声明 } public class MainActivity extends Activity implements IActivity { …… public void anotherClass() { AnotherClassactivity= new AnotherClass( this ); } } public class AnotherClass { private IActivityiActivity; public AnotherClass(IActivityiActivity) { this .iActivity=iActivity; } }
4, android4.0以上pad隐藏状态栏

1.将下面代码加到Activity的onCreate方法中setContenView()前面:

getWindow().getDecorView().setSystemUiVisibility(
View.SYSTEM_UI_FLAG_LOW_PROFILE);//4.0pad去掉隐藏状态栏

2.在onResume中加代码

getWindow().getDecorView().setSystemUiVisibility(
View.GONE);//4.0pad去掉隐藏状态栏

3.同时去掉AndroidManifest.xml中activity关于全屏的配置

更多相关文章

  1. Android常用adb命令总结
  2. Android应用权限及意义
  3. Android学习笔记(一):基本概念
  4. 设置activity为Dialog类型的设置
  5. 第15章 Android启动过程 [Android应用开发与系统改造实战]
  6. 【Android开发基础】应用界面主题Theme使用方法
  7. Android(1.初识Android应用程序目录)
  8. 第一章 开始启程,你的第一行Android代码
  9. Android应用程序添加自定义的property属性

随机推荐

  1. 在VS2008中使用MySQL数据库
  2. 在通过ResultSet反向检索数据时出现NullP
  3. 1 MySQL优化专题
  4. MySQL多表查询之GroupBy
  5. Mysql:向信号量添加给定计数将导致其超出
  6. mysql使用小技巧
  7. oracle分布式事务总结
  8. 如何将所有插入调用标识到表中
  9. 将Excel表格多个Sheet表的数据转换为SQL
  10. SQL注入另类技巧