android3.1以上系统中服务不能开机启动解决方案

来源:互联网 发布:北京体检哪里好 知乎 编辑:程序博客网 时间:2024/05/01 21:47

android3.1以后的系统,没有activity,声明了系统开机广播,也是无法启动的

1、android3.1之后,也是为了安全起见,如果应用程序没有启动过,则receiver不起作用,开机启动不了服务.
2、根据网上有些贴子的提示和做法,我也做了个透明Activity,直接连接数据线把程序装载到手机上,service是可以运行的,因为activity中有启动service的方法
3、程序没启动过,直接安装apk到手机上,则发现开机启动不了程序
4、手机上能启动的程序一般是系统内置程序,也就是程序权限较高,于是想到通过提升apk的权限,使之变为系统应用,再将安装到手机上,上网查了下,需要如下几步
:在配置文件中加入红色部分<uses-sdk android:minSdkVersion="7" android:sharedUserId="android.uid.system" />;重新编译程序--》导出程序空包(apk)--》再对其进行系统签名(签名需要文件如下)
环境配置可通过这个贴子:http://www.cnblogs.com/bvin/archive/2012/09/24/2699470.html
5、签名成功后,可以找一个root后的手机将apk-copy到system/app,然后开机即可看到服务启动.
6、想到项目的需求是通过刷机包直接将apk刷进手机system/app下,因此没有测试,不用提升apk的权限,直接将apk安装到system/app,开机能否启动。

OR:

第一,写一个很简单的程序,就一个Activity,指此Activity标题栏去掉,背景全透明,然后在此Activity的OnCreate将自己finish()掉,什么都不用干,只要在Manifest.xml中申明开机服务就OK,然后在程序内部响应此开机服务。
第二,不要Activity了,直接将程序写成一个Widget。

下面是背景全透明无标题栏的activity创建方法:

在进行UI设计时,我们经常需要将屏幕设置成无标题栏或者全屏。要实现起来也非常简单,主要有两种方法:配置xml文件和编写代码设置。

1.在xml文件中进行配置

在项目的清单文件AndroidManifest.xml中,找到需要全屏或设置成无标题栏的Activity,在该Activity进行如下配置即可。

实现全屏效果:

android:theme="@android:style/Theme.NoTitleBar.Fullscreen"

实现无标题栏(但有系统自带的任务栏):

android:theme="@android:style/Theme.NoTitleBar"
实现全透明:
android:theme="@android:style/Theme.Translucent"
或者只用一个配置就可以实现全透明无标题栏全屏:
android:theme="@android:style/Theme.Translucent.NoTitleBar.Fullscreen"

2.编写代码设置
在程序中编写代码进行设置,只需在onCreate()方法中加入如下代码即可

实现全屏效果:

getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,  WindowManager.LayoutParams.FLAG_FULLSCREEN);

实现无标题栏(但有系统自带的任务栏):

requestWindowFeature(Window.FEATURE_NO_TITLE);

附:Android系统自带样式

android:theme="@android:style/Theme.Dialog" 将一个Activity显示为能话框模式 android:theme="@android:style/Theme.NoTitleBar" 不显示应用程序标题栏 android:theme="@android:style/Theme.NoTitleBar.Fullscreen" 不显示应用程序标题栏,并全屏 android:theme="Theme.Light" 背景为白色 android:theme="Theme.Light.NoTitleBar" 白色背景并无标题栏 android:theme="Theme.Light.NoTitleBar.Fullscreen" 白色背景,无标题栏,全屏 android:theme="Theme.Black" 背景黑色 android:theme="Theme.Black.NoTitleBar" 黑色背景并无标题栏 android:theme="Theme.Black.NoTitleBar.Fullscreen" 黑色背景,无标题栏,全屏 android:theme="Theme.Wallpaper" 用系统桌面为应用程序背景 android:theme="Theme.Wallpaper.NoTitleBar" 用系统桌面为应用程序背景,且无标题栏 android:theme="Theme.Wallpaper.NoTitleBar.Fullscreen" 用系统桌面为应用程序背景,无标题栏,全屏 android:theme="Translucent"  透明背景android:theme="Theme.Translucent.NoTitleBar"  透明背景并无标题android:theme="Theme.Translucent.NoTitleBar.Fullscreen"  透明背景并无标题,全屏android:theme="Theme.Panel"   面板风格显示android:theme="Theme.Light.Panel" 平板风格显示
                                             
0 0