5

Có ứng dụng (chẳng hạn như https://play.google.com/store/apps/details?id=com.teslacoilsw.launcher) được miễn phí, nhưng có tính năng trả phí có thể được kích hoạt bằng cách mua một ứng dụng khác (trong trường hợp này, điều này một https://play.google.com/store/apps/details?id=com.teslacoilsw.launcher.prime)Cách mua ứng dụng để bật các tính năng trả phí của một ứng dụng khác?

làm việc như thế này?

Tôi đoán là các ứng dụng miễn phí sẽ khởi chạy Mục đích rõ ràng và có thể phát hiện xem ứng dụng có hiển thị thông qua cấu trúc try/catch hay không. Nhược điểm của việc này là điều này có thể dễ dàng được tạo ra bởi một người tạo ra một ứng dụng có cùng tên gói và chỉ định tất cả các bộ lọc Intent có thể có.

Đây có phải là cách thức hoạt động hoặc cách khác không?

Trả lời

0

Cách dễ nhất là sử dụng startActivityForResult(...) từ ứng dụng A đối với Hoạt động của ứng dụng B, phải được định cấu hình bằng IntentFilter để được sử dụng từ ứng dụng bên ngoài. Bên trong B gọi là hoạt động bạn cũng có thể kiểm tra ai đang gọi với getCallingActivity(). Bạn có thể tìm thấy một ví dụ here.

Trước khi bắt đầu Hoạt động, bạn có thể kiểm tra rằng B đã được cài đặt (sử dụng PackageManager) hoặc bạn chỉ có thể bắt đầu hoạt động và bắt Ngoại lệ.

Trong Hoạt động được gọi, bạn có thể kiểm tra chữ ký của gói gọi bằng phương thức the PackageManager.checkSignature(String,String). Chuyển tên gói của A và B và nếu chữ ký khớp với nhau, hãy thực thi logic.

+0

Điều này có thể bị phá vỡ nếu tôi tạo một ứng dụng có cùng tên gói và trả lời cùng một mục đích không? Không được xuất bản, nhưng chỉ để cài đặt cục bộ để bật các tính năng của ứng dụng khác. – zundi

+0

Cập nhật câu trả lời –

+0

'PackageManager.checkSignature()' là những gì tôi đang tìm kiếm. Sẽ trả về 'true' nếu cả hai được ký bởi cùng một chứng chỉ, có nghĩa là nó không dễ bị phá vỡ, ngay cả khi bạn có mã nguồn của ứng dụng khác. Cảm ơn – zundi

2

Có nhiều cách khác nhau để thực hiện điều đó. Một cách là truy vấn nhà cung cấp nội dung sẽ được bảo vệ bằng quyền đặc biệt.

Tôi đã phát hành khá lâu trước đây trên Github một thư viện giúp thực hiện việc này: Android Unlocker Library.

Đó là một lựa chọn tốt nếu bạn đang xử lý các thiết bị bên ngoài hệ sinh thái của Google, tuy nhiên, từ trải nghiệm của nhà phát triển, mua hàng trong ứng dụng mang đến trải nghiệm người dùng tốt hơn nhiều (và do đó thúc đẩy nhiều doanh số hơn).

+0

Quyền đặc biệt nào? – zundi

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