2011-05-06 27 views
20

Tôi không hài lòng với bất kỳ chương trình thay đồ ứng dụng nào cho Android mà tôi đã tìm thấy và muốn tạo riêng cho mình, nhưng tôi gặp khó khăn trong việc tìm hiểu cách thực hiện khóa thực tế. Làm cách nào để thực hiện khóa ứng dụng cho Android?Làm thế nào để thực hiện một ứng dụng thay đồ trong Android?

Có hai vấn đề:

  1. Phát hiện Intent, thường là từ launcher gọi startActivity() hoặc từ một quảng cáo tung ra các ứng dụng thị trường (Tôi không nói về ý đồ phát sóng - Tôi cần phải xử lý mục đích hoạt động rõ ràng).

    • Quyền của ứng dụng thay đồ mà tôi thấy tất cả đều có "đọc tệp nhật ký hệ thống" và/hoặc "truy xuất các ứng dụng đang chạy" cho phép họ có thể sử dụng bỏ phiếu để tìm kiếm các lần khởi chạy ứng dụng. Tôi nghĩ rằng tôi có thể làm điều này, nhưng tôi muốn tìm một giải pháp tốt hơn nếu có thể.
  2. Ngăn ứng dụng bị khóa xử lý Ý định. Tôi không muốn cho phép các ứng dụng bị khóa chạy ở tất cả cho đến khi mật mã được nhập vì nó là không thể nói những gì nó có thể làm gì khi nó khởi động.

    • Khi chạy khóa ứng dụng hiện tại của mình, logcat hiển thị "Intent cho ứng dụng bị khóa, sau đó lại với Intent cho khóa ứng dụng, không có gì ở giữa (cách nhau 10-20ms). Nếu tôi nhập đúng mật mã thì tôi thấy "ActivityManager: moveTaskToBack".
    • Tôi đã thử nghiệm với một ứng dụng thử nghiệm chứng minh rằng, bằng cách sử dụng khóa ứng dụng hiện tại của tôi, không có cuộc gọi lại hoạt động nào được gọi nếu ứng dụng bị khóa và tôi không nhập mật mã chính xác. Vì vậy, nó dường như ngăn chặn các ứng dụng từ bắt đầu (nhưng tôi không biết làm thế nào).
    • Tôi có thể sử dụng ActivityManager.killBackgroundProcesses() để dừng ứng dụng, nhưng tôi không đảm bảo rằng ứng dụng chưa bắt đầu chạy vào lúc bị "giết".
    • Tôi có thể sử dụng PackageManager.setApplicationEnabledSetting() để ngăn không cho ứng dụng được khởi tạo, nhưng tôi không nghĩ rằng sẽ quản lý các ứng dụng đang chạy (không được phép xử lý Intent mới hoặc đến nền trước). Tôi có thể sử dụng killBackgroundProcesses() để ngăn chặn tất cả các quá trình đang chạy, do đó chúng sẽ phải được khởi tạo lại. Nhưng tôi không thích cách tiếp cận này bởi vì các ứng dụng khác có thể gây rối với cài đặt Bật và đánh bại khóa.
    • Tối ưu, hệ thống sẽ gửi mọi Intent đến ứng dụng của tôi để kiểm tra và cho phép tôi dừng hoặc cho phép ứng dụng vượt qua, nhưng tôi chắc chắn điều đó là không thể (ít nhất, không cho ý định rõ ràng để bắt đầu hoạt động từ trình khởi chạy).

Có ai biết cách ứng dụng các ứng dụng thay đồ được thực hiện, hoặc có bất cứ ý tưởng sáng về cách nó có thể được thực hiện?

+5

Các kỹ thuật được sử dụng bởi "tủ khóa ứng dụng" là lỗ hổng bảo mật. Tôi đang cố gắng để họ đóng cửa. – CommonsWare

+0

Làm thế nào để ẩn các bệ phóng của các hoạt động ẩn cùng với cơ chế khóa mức ý định? – aProgrammer

+0

@CommonsKhông có bất kỳ tham chiếu nào trong ứng dụng khóa ứng dụng? – nida

Trả lời

Các vấn đề liên quan