通过密码验证安装和卸载Android应用程序

时间:2014-02-11 17:50:48

标签: authentication passwords install uninstall android

我正在制作与安全相关的Android应用。在其中 我想限制用户通过密码卸载Android应用程序, 在安装应用程序时,我想从用户那里获取输入密码,在卸载过程中,用户必须输入相同的密码才能卸载它。 如果没有输入密码,他就不应该卸载该应用程序。

我通过互联网搜索并询问了许多Android开发者,但没有人可以解决它。 这种类型的安全性存在于快速修复应用程序(快速修复移动设备的防病毒)中,因此它是可能的。 有人说用普通的android SDK无法实现,它需要管理API。 有人说它不可能。

如果有人有解决方案,请建议我

我通过广播接收器试用了包观察者,几乎达到了我的目标。 但在卸载时,两个软件包安装程序生成,一个是默认(隐式),一个是由我创建的(显式)。 当用户选择“我的软件包安装程序”时,他会提示输入密码,一切都按照需要进行 但是当用户选择默认软件包安装程序时,应用程序会在不询问密码的情况下进行卸载。

这里的任何人都可以解决这个问题????????

1 个答案:

答案 0 :(得分:0)

您可以使用辅助功能服务检测任何应用(包括您自己的应用)的卸载弹出窗口。

public class MyService extends AccessibilityService {


@Override
public void onCreate() {
    super.onCreate();

}

@Override
public void onAccessibilityEvent(AccessibilityEvent event) {

    if (event.getEventType() == AccessibilityEvent.TYPE_WINDOW_STATE_CHANGED) {

    if(event.getText().equalsIgnoreCase("check for content in popup which is in screenshot"){

            /**Here display a popup to enter password*/
        }
    }

}

@Override
public void onInterrupt() {

}


@Override
protected void onServiceConnected() {
    super.onServiceConnected();

    AccessibilityServiceInfo info = new AccessibilityServiceInfo();
    info.flags = AccessibilityServiceInfo.DEFAULT;
    info.packageNames = new String[]{"com.android.packageinstaller"};
    info.eventTypes = AccessibilityEvent.TYPE_WINDOW_STATE_CHANGED | AccessibilityEvent.TYPE_WINDOW_CONTENT_CHANGED;
    info.feedbackType = AccessibilityServiceInfo.FEEDBACK_GENERIC;
    setServiceInfo(info);
}

}

此处onServiceConnectedcom.android.packageinstaller表示安装/卸载应用程序包名称(这是系统应用程序,它没有任何UI,因此不会向用户显示)。

enter image description here