Android 运行某些应用程序需要密码吗?

Android 运行某些应用程序需要密码吗?,android,security,passwords,Android,Security,Passwords,我想尝试并实现中提供的功能 也就是说,用户应该输入密码来运行某些应用程序。我不知道该往哪个方向走 我认为一定有服务在后台运行。如果它发现任何新活动正在启动,则检查它是否受密码保护。如果是,则将显示安全屏幕 我可以帮你 提取它: 存储带有上次暂停活动的系统时间的长变量。 import android.app.Application; public class MyApplication extends Application { public long mLastPa

我想尝试并实现中提供的功能


也就是说,用户应该输入密码来运行某些应用程序。我不知道该往哪个方向走

我认为一定有服务在后台运行。如果它发现任何新活动正在启动,则检查它是否受密码保护。如果是,则将显示安全屏幕

我可以帮你

提取它:

存储带有上次暂停活动的系统时间的长变量。

   import android.app.Application;
    public class MyApplication extends Application {
        public long mLastPause;

        @Override
        public void onCreate() {
            super.onCreate();
            mLastPause = 0;
            Log.w("Application","Launch");
        }
    }
@Override
public void onPause() {
    super.onPause();
    ((MyApplication)this.getApplication()).mLastPause = System.currentTimeMillis();
}
@Override
public void onResume() {
    super.onResume();
    MyApplication app = ((MyApplication)act.getApplication());
    if (System.currentTimeMillis() - app.mLastPause > 5000) {
        // If more than 5 seconds since last pause, prompt for password
    }
}
在每个onPause方法中,我将此值更新为当前时间。

   import android.app.Application;
    public class MyApplication extends Application {
        public long mLastPause;

        @Override
        public void onCreate() {
            super.onCreate();
            mLastPause = 0;
            Log.w("Application","Launch");
        }
    }
@Override
public void onPause() {
    super.onPause();
    ((MyApplication)this.getApplication()).mLastPause = System.currentTimeMillis();
}
@Override
public void onResume() {
    super.onResume();
    MyApplication app = ((MyApplication)act.getApplication());
    if (System.currentTimeMillis() - app.mLastPause > 5000) {
        // If more than 5 seconds since last pause, prompt for password
    }
}
并在每个onResume中,将其与当前时间进行比较。如果经过一定时间(当前为5秒),则会显示我的密码提示。

   import android.app.Application;
    public class MyApplication extends Application {
        public long mLastPause;

        @Override
        public void onCreate() {
            super.onCreate();
            mLastPause = 0;
            Log.w("Application","Launch");
        }
    }
@Override
public void onPause() {
    super.onPause();
    ((MyApplication)this.getApplication()).mLastPause = System.currentTimeMillis();
}
@Override
public void onResume() {
    super.onResume();
    MyApplication app = ((MyApplication)act.getApplication());
    if (System.currentTimeMillis() - app.mLastPause > 5000) {
        // If more than 5 seconds since last pause, prompt for password
    }
}

在库存设备上不可能。您所能做的最好的事情就是编写一个自定义启动器,它需要密码才能运行某些应用程序。用户可以随时将启动器更改为库存启动器,因此作为安全功能并不真正有用。如果你想阻止你(年轻的)孩子访问你的Gmail等等,这可能会奏效。有一些黑客使得它看起来可行,但没有什么是可靠的

你到底想实现什么?@thepoosh类似于我项目的安全应用程序。用户可以从已安装的应用列表中选择应用,每次有人尝试运行该应用时,他们都必须提供密码。是的,将有人监视新活动,但我认为新活动将在单独的线程中启动,我的对话框也会启动,因此我们如何阻止它继续进行,否则它将继续运行,即使我们设置了一个屏幕来询问密码。我认为这将只适用于他正在开发的应用程序。但他要求所有安装在该设备上的应用程序都使用这一功能。你知道关于更改启动器的任何文档吗,我愿意试一试。我也会自己找。默认的启动程序是开源的,所以获取AOSP代码并从那里开始。谢谢你的提示,我会看一看。