2011-11-16 22 views
6

Đây là dự án đầu tiên của tôi trên nền tảng Android và tôi không cảm thấy thoải mái với môi trường này.Nhận tên gói và chữ ký từ uid/pid của ứng dụng trong ứng dụng khách bản địa

Tôi cần viết một ứng dụng gốc có thể lấy được tên gói ứng dụng và chữ ký của nó ra khỏi [id người dùng của ứng dụng và, pid của ví dụ đang chạy của ứng dụng].

Tôi đã lướt qua khung ứng dụng Android và thấy rằng PackageManger có khả năng nhận chữ ký gói. “..getPackageManager(). GetPackageInfo (packageName, GET_SIGNATURES) ..”

nhưng, điều này cho thấy khả năng nhận chữ ký từ tên gói trong ứng dụng Java. như tôi đã nói, các tham số đầu vào của chúng tôi chỉ là id quá trình cá thể id/chạy người dùng của ứng dụng. và tôi cũng cần ứng dụng gốc không phải ứng dụng java.

Câu hỏi của tôi có thể được chia thành các phần sau.

  1. Có cách nào nhận tên gói từ uid và pid của ứng dụng đang chạy trong chương trình gốc không? Nếu khách hàng gốc không thể thực hiện được, các phương thức với Java cũng được chào đón.

  2. Có cách nào nhận chữ ký từ tên gói không? Như tôi đã nói, tôi đã tìm thấy giải pháp java cho nó.

  3. Có thể cho khách hàng bản địa sử dụng dịch vụ Binder không? Phương pháp này có giúp ích cho vấn đề của tôi không? nếu vậy, làm thế nào?

cảm ơn trước!

Trả lời

5

A1: Tôi cho rằng có thể quét thư mục ứng dụng cho tên gói và sau đó thử khớp với id người dùng được liên kết trong mã gốc. Trong Java bạn chỉ có thể sử dụng getPackageForUid().

A2: Chưa thấy bất kỳ nội dung nào để làm điều này. Việc truy cập các tệp .apk tùy ý sẽ không thể thực hiện được trên điện thoại không bắt nguồn.

A3: "Có lẽ không phải" và "có thể không" và: Tôi không thấy như thế nào. Việc ràng buộc với một dịch vụ từ xa không cung cấp thông tin xác thực của dịch vụ; ngay cả khi đã làm: Cách xác thực chữ ký mà không truy cập vào nội dung đã ký, tức là .apk.

Edit:

Công cụ pm, như đã đề cập here, có thể giúp đỡ.

+0

Thực tế, các tệp APK nằm trong '/ data/app' có thể đọc được trên toàn thế giới. Có một cơ chế bảo vệ bản sao đã tồn tại trong một thời gian ngắn từ nhiều năm trước, nó đã biến mất, xem http://developer.android.com/google/play/licensing/overview.html – satur9nine

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