【问题标题】:Lock The Android device screen and prevent the user to unlock it锁定 Android 设备屏幕并阻止用户解锁它
【发布时间】:2014-08-26 13:52:42
【问题描述】:

我正在使用应阻止用户在某些情况下使用手机的 Android 应用程序。 所以我试图锁定屏幕 我使用了 PowerManger goToSleeo() 方法 但它需要 DEVICE_POWER 权限。这仅适用于系统应用程序,但我的应用程序不是系统应用程序 我该怎么办?

这是我的代码

 PowerManager  manager = (PowerManager) getSystemService(Context.POWER_SERVICE);
                 manager.goToSleep(600000);

【问题讨论】:

  • 创建自己的锁屏活动怎么样?压倒听众等?我想您打算将其构建为安全应用程序?

标签: android lockscreen android-powermanager


【解决方案1】:

反问:如果普通应用程序可以锁定您的屏幕,它的用途是什么?在我看来,那是恶意软件。你需要许可,没有什么能改变它。唯一的解决方案是删除这个“功能”。

编辑:顺便说一下更多信息:Android What permissions required to call PowerManager.goToSleep(n) put device in sleep mode?

【讨论】:

    【解决方案2】:

    出于某种原因,这种事情在 Android 中很难做到。您正试图阻止对主操作系统的访问,这是一件坏事。正如其他人所提到的,这可能会被用于恶意目的(在您付费发布之前,有人可能会创建一个勒索软件应用程序来阻止您的设备,这并不夸张)。

    所以底线 - 你不能做你所要求的(并且有充分的理由)。特别是在非root手机上。一个设备被植根,你可以做任何事情(包括阻止访问系统按钮)。

    有关此的更多详细信息,请查看“信息亭”模式,或阻止系统访问(有很多关于此的 SO 问题)。

    【讨论】:

      【解决方案3】:

      您不想锁定设备,这是故意设计的。但是,您可以通过覆盖 onTouchEvent 来禁用触摸输入。

      然后您需要创建一个视图,如下所示:

      <FrameLayout
          android:layout_width="fill_parent"
          android:layout_height="fill_parent"/>
      
                   <your code here>
      
          <Disabletouch
              android:id="@+id/black_hole"
              android:layout_width="fill_parent"
              android:layout_height="fill_parent" />
      </FrameLayout>
      

      并像这样定义它:

      public class DisableTouch extends View {
          private boolean touch_disabled=true;
          @Override
          public boolean onTouchEvent(MotionEvent e) {
              return touch_disabled;
          }
          public disable_touch(boolean b) {
              touch_disabled=b;
          }
      }
      

      在活动中调用它:

      (DisableTouch) black_hole = findViewById(R.id.black_hole);
      black_hole.disable_touch(true);
      

      反过来:

       black_hole.disable_touch(false);
      

      【讨论】:

      • 谢谢 Wolfish,但我写了你的代码,我遇到了以下异常 [Error inflating class Disabletouch
      • @AhdRadwan 哎呀...我可能错过了 xml 中某处或其他地方的构造函数。让我努力吧,好久没看这个sn-p了
      • @AhdRadwan 你在哪里看到&lt;Disabletouch,试试大写touch?如,
      猜你喜欢
      • 1970-01-01
      • 2016-05-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多