Ứng dụng của tôi có thông tin người dùng nhạy cảm và chúng tôi cần triển khai màn hình mật mã để hiển thị bất cứ khi nào người dùng mở ứng dụng. Dưới đây là hai phương pháp tôi đã thử sau khi đọc this post.Thực hiện Khóa mật khẩu cho ứng dụng Android
Sử dụng một biến tĩnh và đặt lại nó trong
onStop()
của từng hoạt động và kiểm tra xem nó một lần nữa trongonStart()
của từng hoạt động và hiển thị màn hình mật mã nếu thời gian vượt qua mức tối thiểu ngưỡng nói 1-2 giây. Vấn đề với cách tiếp cận này là ứng dụng của tôi cũng sử dụng ý định để gọi máy quét mã vạch và máy ảnh và người dùng có thể mất nhiều thời gian hơn trong các ứng dụng bên ngoài này. Tôi có thể tăng ngưỡng trong trường hợp này nhưng nó làm cho các phép tính phức tạp và không phải là một giải pháp rất tốt.Tôi đã thử cách tiếp cận khác bằng cách sử dụng phương pháp này.
protected boolean isAppOnForeground(final Context context) { List<RunningAppProcessInfo> appProcesses = ((ActivityManager) context.getSystemService(Context.ACTIVITY_SERVICE)).getRunningAppProcesses(); if (appProcesses == null) { return false; } final String packageName = context.getPackageName(); for (RunningAppProcessInfo appProcess : appProcesses) { if ((appProcess.importance == RunningAppProcessInfo.IMPORTANCE_FOREGROUND) && appProcess.processName.equals(packageName)) { return true; } } return false; }
Nhưng điều này sẽ luôn luôn trở thành sự thật khi tôi kiểm tra nó trong phương thức onStart của từng hoạt động kể từ khi quá trình đã bắt đầu vào thời điểm đó là trong onStart
Có bất kỳ phương pháp khác mà Tôi có thể thực hiện để hiển thị mật mã khi người dùng mở ứng dụng? Nó sẽ được hiển thị ngay cả khi người dùng nhấp vào màn hình chính để thoát khỏi ứng dụng và sau đó quay lại ứng dụng từ các ứng dụng gần đây.
không chắc chắn, nhưng nếu u có thể thực hiện dịch vụ và mọi người nói 1 hoặc 2 giây gọi isapponforeground và thay đổi biến thành true/false và trong hoạt động tiếp tục, chỉ cần kiểm tra/false – Amit
cho số 1, cái gì về chuỗi loại một phiên SỬ DỤNG/cookie được mã hóa được lưu trữ trong SharedPreference * private * - bạn có thể đặt thời gian chờ trong vài phút và điều này có thể cho phép người dùng rời khỏi và quay lại ứng dụng của bạn. – pjco
một giải pháp khác có thể trở thành quản trị viên thiết bị để sử dụng khóa thiết bị thay vì khóa pin ứng dụng tùy chỉnh. điều này có thể tốt hơn hoặc tệ hơn tùy thuộc vào cách bạn nhìn vào nó. nếu bạn có nhiều ứng dụng yêu cầu bảo mật, đó là một khóa duy nhất cho tất cả các ứng dụng. nếu bạn chỉ có một ứng dụng, người dùng sẽ cảm thấy khó chịu vì ứng dụng của bạn đang buộc họ phải có màn hình khóa. –