我想在用户打开任何应用程序时添加特定活动(假设询问密码)。我怎么能在android中做到这一点?
- 例如:假设用户想要打开相机,应该首先将其重定向到该密码屏幕,用户将添加密码,如果是正确的,他就可以打开相机。
答案 0 :(得分:2)
为此,您需要声明后台服务以在用户打开相机应用程序时捕获事件。后台服务将具有onReceive()方法。在该方法中,您可以获取正在运行的应用程序进程列表,并在摄像机位于前台时进行匹配。如果用户单击了摄像机,它将显示在正在运行的应用程序列表中。然后截取该事件并显示您要向用户显示的对话框片段。
您可以实现一个自定义DialogFragment类,该类具有要求用户输入密码的必填字段。
在Custom对话框类中,您声明了一个接口,如下所示:
public interface CustomAddressDialogListener{
public void onDialogPositiveClick(DialogFragment dialog, String enteredPassword);
public void onDialogNegativeClick(DialogFragment dialog);
}
自定义DialogFragment将有自己的布局用于输入密码,您可以设置肯定操作和否定操作。
积极行动:用户输入密码并点击提交。
否定操作:用户无需输入密码并点击取消。
您的父活动可以实现此界面以捕获正面和负面点击。
@Override
public void onDialogPositiveClick(DialogFragment dialog, String enteredPassword) {
// Here you can check if the password is correct or wrong and take the action accordingly to open the camera.
}
在处理否定操作时,您可以使用kill相机进程终止相机进程:android.os.Process.sendSignal(pid,android.os.Process.SIGNAL_KILL); 这里pid是相机应用程序的进程ID。获取运行应用程序进程的信息后,可以获取pid。
有关详细信息,请参阅:http://developer.android.com/reference/android/app/DialogFragment.html