android AndroidManifest文件中 android:installLocation="preferExternal"的作用

记录开发遇到一个细节代码

昨天快下班的时候,接到现场提出了一个需求:在项目中加上开机自启应用的功能。我说这个简单啊,就是监听开机广播嘛,用不了几分钟就可以搞定了,然后我就开始写代码,主要是改两个地方:

1、AndroidManifest.xml文件

 



    


        
            
                

                
            
        

    



2、XYBootUpReceiver.java文件
public class XYBootUpReceiver extends BroadcastReceiver {

    private static final String TAG = XYBootUpReceiver.class.getSimpleName();

    @Override
    public void onReceive(Context context, Intent intent) {
         Log.d(TAG,"onReceive===================");
         Intent i = new Intent(context, SplashActivity.class);
            i.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
            context.startActivity(i);
    }

}

我用4.4.4的测试机(笔者公司是做android平板开发,机器是自己生产的)测试,完美,没有问题,然后我就提交给现场的项目经理,说:大哥,赶紧测试一下,我要下班。然后我就开始收拾东西,准备下班!

过了2分钟,现场的项目经理说:我重新安装了,没见到开启启动啊,你用4.0.2系统的旧机器试一下。

我去拿4.0.2系统的机器试一下,尼玛,果然没启动,什么鬼。然后就开始一顿排查:先是排除机器的问题,然后确定是代码某个配置导致的问题,最后经过与同事排查测试,确定了根源问题:


image.png

就是因为AndroidManifest文件中配置了 android:installLocation="preferExternal"这一句,然后导致开机接收不了开机的广播。

分享一篇在网上找的文章,详细介绍了 android:installLocation这个设置

你可能感兴趣的:(android AndroidManifest文件中 android:installLocation="preferExternal"的作用)