您的位置:首页 > 其它

Andriod中应用开机自启动的问题

2016-06-14 13:38 288 查看
这周的时候,因为项目需要,加了开机自启动。在测试的时候发现在联想4.4.2的手机上测试,是正常的,而在华为5.1的手机上测试根本不起作用。首先咱先来说一说开机自起应用怎么来实现,大体思路如下:

1.在Mainfestxml文件中注册广播(在xml中注册的广播为常驻型广播,即使你的应用退出,也照样在监听你所要监听的广播)

  <receiver android:name="<span style="color:#ff0000;">com.example.atextdemo</span>.BootCastReceiver"
>
<intent-filter>
<action android:name="android.intent.action.BOOT_COMPLETED" />
</intent-filter>
</receiver> 标红的地方是你所建的广播类所存在的包名(name=包名.类名),特别注意别忘了添加权限
<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />

2.定义开机广播接收的receiver
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;

public class BootCastReceiver extends BroadcastReceiver {

@Override
public void onReceive(Context context, Intent intent) {
// TODO Auto-generated method stub
Intent service = new Intent(context, MainActivity.class);
service.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
context.startActivity(service );
}

}3.需要严重注意一下,就是Apk需要设置默认安装到手机内存,因为外设SD卡是接收不到开机广播的 android:installLocation="internalOnly",添加位置如下
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.atextdemo"
android:versionCode="1"
android:versionName="1.0"
android:installLocation="internalOnly"
>


上面几个步骤就可以实现一个简单的开机自起应用

如果你用的是小米的测试机,你可能会说,这不起作用,因为根本就接收不到andriod.intent.action.BOOT_COMPLETED这个广播,下面你听我说,这不是你的代码的问题,小米手机的Andriod系统是定制的,所以屏蔽掉了开机广播的发送,也就是非系统应用不具备权限,你要说那怎么办,别急这样做

系统与安全文件夹--->安全中心--->授权管理--->自启动管理--->对本App添加自启动授权

对你的应用进行开机自起的授权,不知小米手机,华为,三星的也是类似,你可能又会说,作为开发者的我们知道这么做,但用户不一定知道啊,下面是我给 的一点点建议

1.在程序第一次运行的时候给个土司,Toast提示下用户怎么去设置

2.在引导页面用图片的形式展示出来设置的具体步骤

3.在需要的时候,由你的应用自动跳到设置界面,代码如下

Intent i = new Intent();
ComponentName comp = new ComponentName("com.android.settings",
"com.android.settings.BackgroundApplicationsManager");
i.setComponent(comp);
startActivity(i);

如果别的手机收不到而且是非原生系统的话,可以试一下。另外其他的可能的实现思路:

(1)开机监听比较敏感,一般涉及到系统安全问题;所以可以尝试监听一下别的开机事件替代,比如SD卡的准备状态...

(2) 非系统应用不具备获取广播的权限,那么想办法将App的默认安装路径放到系统文件夹/system/apps/下面

(3)至于以上的解决办法,可以说是没解决。只是给正在纠结找不到原因的道友一个问题根源的解脱。我们可以在启动页添加一个友情提示,提示用户可以尝试着这么操作

还有一点不知道大家注意到了没,就是当你强行停止你的程序时,你发现即使你授权了,下次开启,你的应用也自起不了了,希望知道原因的朋友给点提示

需要源码的朋友,可以点击下面的连接,下载源码看看

    http://download.csdn.net/detail/shihuiyun/9549158
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息