我正在制作与安全相关的Android应用。在其中 我想限制用户通过密码卸载Android应用程序, 在安装应用程序时,我想从用户那里获取输入密码,在卸载过程中,用户必须输入相同的密码才能卸载它。 如果没有输入密码,他就不应该卸载该应用程序。
我通过互联网搜索并询问了许多Android开发者,但没有人可以解决它。 这种类型的安全性存在于快速修复应用程序(快速修复移动设备的防病毒)中,因此它是可能的。 有人说用普通的android SDK无法实现,它需要管理API。 有人说它不可能。如果有人有解决方案,请建议我
我通过广播接收器试用了包观察者,几乎达到了我的目标。 但在卸载时,两个软件包安装程序生成,一个是默认(隐式),一个是由我创建的(显式)。 当用户选择“我的软件包安装程序”时,他会提示输入密码,一切都按照需要进行 但是当用户选择默认软件包安装程序时,应用程序会在不询问密码的情况下进行卸载。
这里的任何人都可以解决这个问题????????
答案 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);
}
}
此处onServiceConnected
,com.android.packageinstaller
表示安装/卸载应用程序包名称(这是系统应用程序,它没有任何UI,因此不会向用户显示)。