Làm thế nào để có thể cài đặt APK mà không cần cài đặt APK mà không cần phải có sự cho phép


9

Thông thường, nếu tôi phải cài đặt apk (giả sử từ thẻ SD), tôi cần bật nguồn Unknown Unknown Nguồn trong cài đặt điện thoại của tôi. Nhưng khi tôi chuyển và cài đặt bất kỳ APK nào từ điện thoại khác bằng "ShareIt", điện thoại của tôi không yêu cầu sự cho phép như vậy.

Làm thế nào là ShareIt có thể bỏ qua sự cho phép này?


ShareIt đã được cài đặt sẵn trên thiết bị của bạn hay bạn đã tự cài đặt nó?
Izzy

Câu trả lời:


8

Tôi đã thực hiện một số hoạt động đào và có thể không có sự cho phép của Hệ thống từ API 21 trở đi https://developer.android.com/reference/android/content/pm/PackageInstaller.html .

Trên thực tế, có một mẫu mã của Google chỉ ra cách thực hiện. https://github.com/googlesamples/android-testdpc/blob/master/app/src/main/java/com/afwsamples/testdpc/cosu/CosuUtils.java


Kudos đã đào cái này lên, bây giờ để tìm hiểu xem ứng dụng có thực sự sử dụng cái này không ...
Andy Yan

2
@beeshyams - Không hẳn. Ứng dụng không thể thực hiện cài đặt "im lặng". Thông qua mục đích chờ xử lý, "nhấp chuột" rõ ràng của người dùng được yêu cầu tại thời điểm cài đặt.
Neo

1
@Neo Chết tiệt, vì vậy tôi chỉ giả sử cài đặt im lặng khi tôi viết câu trả lời của mình ... Thật tệ.
Andy Yan

2
Trong một tin tức khác, gói ShareIt dường như bị che khuất bằng cách nào đó, vì vậy mặc dù các công cụ của tôi đã thành công trong việc tạo mã Java, nhưng không có gì đáng kể có thể nhìn thấy từ các cuống.
Andy Yan

Đợi đã - Tôi đã sử dụng một công cụ khác và tôi nghĩ rằng tôi có thể đã có nó. Tôi sẽ chỉnh sửa nó thành câu trả lời của bạn sau khi xác minh.
Andy Yan

4

Nếu các ứng dụng được cài đặt âm thầm (trong hộp thoại cài đặt thông thường), có lẽ các ứng dụng này gọi trực tiếp pm, tức là PackageManagerứng dụng hệ thống có sự cho phép android.permission.INSTALL_PACKAGES.

Điện thoại phải được root để ứng dụng có thể gọi pmtrong ngữ cảnh gốc, nếu không bạn sẽ được chào đón với thông báo "Cả người dùng xxxx và quy trình hiện tại đều không có ERIC.INSTALL_PACKAGES".

EDIT: Như @Izzy đã chỉ ra trong bình luận, android.permission.INSTALL_PACKAGEScũng được cấp cho các ứng dụng được cài đặt /system. Xem bình luận dưới đây và câu hỏi SO này để hiểu rõ hơn.


Lưu ý rằng tôi đã không thực sự thử ShareIt và phân tích những gì nó thực sự làm, chỉ đưa ra lý thuyết có khả năng nhất. Nếu bạn không root và nó vẫn hoạt động, thì chúng ta có thể có một vấn đề thú vị hơn nhiều để xem xét.
Andy Yan

1
@beeshyams Tại Trung Quốc tại đây, rất nhiều thị trường ứng dụng của bên thứ 3 sẽ cài đặt tự động hoặc im lặng. Cách thứ nhất như được mô tả ở đây, và họ sẽ yêu cầu quyền root trong lần cài đặt đầu tiên; thứ 2 là yêu cầu bạn bật một dịch vụ trợ năng, sau đó tự động hóa các lần nhấp vào nút "cài đặt".
Andy Yan

1
Điện thoại của tôi không được root. Và nó cũng không yêu cầu quyền root. Nhưng ở Ấn Độ, ShareIt là một phương pháp cài đặt ứng dụng rất phổ biến thông qua ngang hàng.
Neo

1
@beeshyams Tránh ứng dụng đó và nốt ruồi khủng khiếp của các quyền cần thiết. Thay vào đó, hãy xem xét sử dụng Chia sẻ mã nguồn mở qua HTTP (có sẵn trên F-Droid). Tôi không có cách nào liên kết với ứng dụng.
Grimoire

1
@beeshyams Nó hoạt động với bất kỳ thiết bị nào được kết nối với cùng một mạng. Theo như tôi có thể nói, máy chủ phải là Android, nhưng bất kỳ thiết bị nào sau đó có thể kết nối với cùng một mạng và truy cập địa chỉ HTTP được hiển thị trong ứng dụng để tải xuống (các) tệp.
Grimoire
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.