• [置顶] Android下实现自动关机的方法总结


    最近在网上看了一些Android下实现自动关机的方法,有的不行,有的只适用一些机型,有的适用于大部分机型,笔者在此总结一下

    法一:

    Intent newIntent = new Intent(Intent.ACTION_SHUTDOWN);
    newIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
    startActivity(newIntent);

    这种方法笔者试过,运行时出错

    法二:

    try {

                //获得ServiceManager类
                Class<?> ServiceManager = Class
                   .forName("android.os.ServiceManager");

                //获得ServiceManager的getService方法
                Method getService = ServiceManager.getMethod("getService", java.lang.String.class);

                //调用getService获取RemoteService
                Object oRemoteService = getService.invoke(null,Context.POWER_SERVICE);

                //获得IPowerManager.Stub类
                Class<?> cStub = Class
                   .forName("android.os.IPowerManager$Stub");
                //获得asInterface方法
                Method asInterface = cStub.getMethod("asInterface", android.os.IBinder.class);
                //调用asInterface方法获取IPowerManager对象
                Object oIPowerManager = asInterface.invoke(null, oRemoteService);
                //获得shutdown()方法
                Method shutdown = oIPowerManager.getClass().getMethod("shutdown",boolean.class,boolean.class);
                //调用shutdown()方法
                shutdown.invoke(oIPowerManager,false,true);

       } catch (Exception e) {
           Log.e("shutdown", e.toString(), e);
       }

    利用反射调用oIPowerManager方法,此种方法在有些机型上是可以的,但有些机型上在Method shutdown = oIPowerManager.getClass().getMethod("shutdown",boolean.class,boolean.class);时会报出java.lang.NoSuchMethodException: shutdown [boolean, boolean]  错误,可能是这些机型不存在此方法

    法三:

      Intent intent = new Intent("android.intent.action.ACTION_REQUEST_SHUTDOWN");

    // 源码中"android.intent.action.ACTION_REQUEST_SHUTDOWN“ 就是 Intent.ACTION_REQUEST_SHUTDOWN方法
      intent.putExtra("android.intent.extra.KEY_CONFIRM", false);

    // 源码中"android.intent.extra.KEY_CONFIRM"就是 Intent.EXTRA_KEY_CONFIRM方法
      intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
      startActivity(intent);

    这种方法笔者试过适用于大部分机型

  • 相关阅读:
    hi.baidu.com 百度流量统计
    Autofac is designed to track and dispose of resources for you.
    IIS Manager could not load type for module provider 'SharedConfig' that is declared in administration.config
    How to create and manage configuration backups in Internet Information Services 7.0
    定制swagger的UI
    NSwag在asp.net web api中的使用,基于Global.asax
    NSwag Tutorial: Integrate the NSwag toolchain into your ASP.NET Web API project
    JS变量对象详解
    JS执行上下文(执行环境)详细图解
    JS内存空间详细图解
  • 原文地址:https://www.cnblogs.com/dyllove98/p/3146752.html
Copyright © 2020-2023  润新知