解决方案 »

  1.   

    这个只能根据是否启动了相应的服务来判断,就是说,如果相应的操作完成了,就相当于是被允许了。有些系统,比如小米的,都有设置是否允许自启动,或者开机启动,但是app里边是不能知道用户是否设置了这个权限的,所以只能说,如果允许你启动了,你相应的操作能够做出来,比如启动了服务,这样,只要服务启动起来了,就说明被允许了,反之,则没有。这个道理和连接网络是一样的,小米也有针对某一个app是否允许联网的操作,如果网络权限被禁止了,你app里边也是不知道的,只能通过是否联网成功来判断。
      

  2.   

    哎,我这几天折腾下来的结果和你的结论一样,但是我看见其他的一些app会在被禁止启动后提示用户区设置,现在也想要这个功能,但是做不到啊 
      

  3.   


    你试试  开机的时候app会收到一个广播的,理论上只要你注册了就会收到开机广播,然后在广播里边操作你需要启动的。最好用能禁止启动的手机或者软件测试一下。看看在被禁止启动的状态下,能不能收到开机广播,或者,在收到广播以后启动的服务能不能正常启动,和在没禁止的时候对比一下,看看能不能找到区别。
    希望能帮到你。
      

  4.   

    你试试  开机的时候app会收到一个广播的,理论上只要你注册了就会收到开机广播,然后在广播里边操作你需要启动的。最好用能禁止启动的手机或者软件测试一下。看看在被禁止启动的状态下,能不能收到开机广播,或者,在收到广播以后启动的服务能不能正常启动,和在没禁止的时候对比一下,看看能不能找到区别。
    希望能帮到你。
    可以通过程序知道那些应用注册了开机广播,但是在有些系统里,如果你的应用被设置了禁止开机启动,那么开机的时候你注册的广播是没有被系统挂起的,但是当你手动启动以后,你的广播又是一定会被挂起的。这就造成了,我检测不了自己的应用是否被禁止了。
      

  5.   


    我认为6楼的方法可行,用两个标记变量,写到sharedpreference里
    auto_boot=true //标记是否开机启动
    first_lunch=true // 标记是否第一次启动app在mainActivity里判断
    if(auto_boot) {
        //自动启动没问题
        auto_boot=false;
        fist_lunch = false;
    } else if(!auto_boot && first_lunch) {
        //第一次启动,但是auto_boot==false,被禁止了,提示
    } else {
         auto_boot=false;
         fist_lunch = false;
    }
      

  6.   


    我认为6楼的方法可行,用两个标记变量,写到sharedpreference里
    auto_boot=true //标记是否开机启动
    first_lunch=true // 标记是否第一次启动app在mainActivity里判断
    if(auto_boot) {
        //自动启动没问题
        auto_boot=false;
        fist_lunch = false;
    } else if(!auto_boot && first_lunch) {
        //第一次启动,但是auto_boot==false,被禁止了,提示
    } else {
         auto_boot=false;
         fist_lunch = false;
    }
    这两个变量,你在什么情况下赋值呢?开机启动的标记,怎么样才能设置成true呢?
      

  7.   

    推荐你看看这篇文章http://blog.csdn.net/su1216/article/details/7967191
      

  8.   

    再注册个关机广播,关机时在sharedPreference保存一个信息,比如shutdown=true,然后在开机广播中改变这个值shutdown=false;然后进入app时就可以根据这个值判断
      

  9.   


    我认为6楼的方法可行,用两个标记变量,写到sharedpreference里
    auto_boot=true //标记是否开机启动
    first_lunch=true // 标记是否第一次启动app在mainActivity里判断
    if(auto_boot) {
        //自动启动没问题
        auto_boot=false;
        fist_lunch = false;
    } else if(!auto_boot && first_lunch) {
        //第一次启动,但是auto_boot==false,被禁止了,提示
    } else {
         auto_boot=false;
         fist_lunch = false;
    }
    这两个变量,你在什么情况下赋值呢?开机启动的标记,怎么样才能设置成true呢?

    上面已经写了,初始化为true,你不能一装上app就被禁止了。
      

  10.   


    我认为6楼的方法可行,用两个标记变量,写到sharedpreference里
    auto_boot=true //标记是否开机启动
    first_lunch=true // 标记是否第一次启动app在mainActivity里判断
    if(auto_boot) {
        //自动启动没问题
        auto_boot=false;
        fist_lunch = false;
    } else if(!auto_boot && first_lunch) {
        //第一次启动,但是auto_boot==false,被禁止了,提示
    } else {
         auto_boot=false;
         fist_lunch = false;
    }
    这两个变量,你在什么情况下赋值呢?开机启动的标记,怎么样才能设置成true呢?

    上面已经写了,初始化为true,你不能一装上app就被禁止了。还真有的,小米的,安装完成以后,你没打开的时候就可以设置。