Do this annoying Android limitation Tôi cần người dùng cài đặt lại ứng dụng của mình để các ứng dụng khác phát hiện các quyền đối với tệp kê khai.Cài đặt lại apk ứng dụng lập trình mà không cần tải xuống
Điều này sẽ gây phiền toái cho người dùng, nhưng ngoài ra, tôi không thể thấy cách cài đặt lại ứng dụng từ apk được lưu trữ trong/data/app và do đó tôi phải tải xuống cùng một phiên bản cho bộ nhớ trước khi kích hoạt ý định cài đặt thông thường.
Tôi háo hức chờ ai đó nói với tôi rằng tôi thiếu điều gì đó hiển nhiên! Tôi đã vẽ một ô trống ...
Xin cảm ơn trước.
Vui lòng đánh dấu sao vấn đề nếu bạn muốn xem giải pháp được giải quyết! Chúc mừng.
EDIT: Với ý kiến của @hackbod trong tâm trí, bạn có thể sử dụng đoạn mã sau để bắt đầu cài đặt hộp thoại.
Intent intent = new Intent(Intent.ACTION_VIEW);
intent.setDataAndType(Uri.fromFile(new File(this.getApplicationInfo().sourceDir)),
"application/vnd.android.package-archive");
startActivity(intent);
Trên điện thoại Jelly Bean của tôi, điều này thể hiện hai lựa chọn: cài đặt gói và Xác minh và cài đặt. Tôi không biết nếu sau này sẽ đối phó với các vấn đề:
- Cài đặt ứng dụng của bạn theo cách này có thể sẽ loại bỏ quyền sở hữu của nó từ Play Store
Ứng dụng của tôi là miễn phí, vì vậy tôi không thể kiểm tra vấn đề trả tiền của: Tuy nhiên
- Lưu ý nếu ứng dụng của bạn về phía trước khóa (đó là không thể tránh khỏi đối với tất cả các ứng dụng trả tiền bắt đầu với JB, do sự mã hóa ứng dụng), thì điều này sẽ không làm việc becau ứng dụng của bạn không thể đọc được bởi những người khác
Mặc dù hackbod kết thúc bằng 'mã của người khác có thể đọc được' cho ứng dụng của bạn, nó có thể đọc được không? Vui lòng sửa tôi nếu bạn có thể kiểm tra điều này và tôi đã sai.
Bạn có thể sao chép từ/data/app vào thẻ lưu trữ. Mặc dù bạn không thể duyệt thư mục đó, các tệp mà nó chứa thường có thể đọc được - mặc dù điều đó không được bảo đảm (và đó không phải lúc nào cũng là vị trí cài đặt). Một giải pháp thay thế có thể là không sử dụng hệ thống cấp phép, nhưng cố gắng thực hiện xác thực của riêng bạn về gói yêu cầu. –
Cảm ơn Chris - Ứng dụng của tôi cần được cài đặt trên thiết bị nếu không nó sẽ không hoạt động chính xác, vì vậy tôi đã lo lắng tối thiểu về vị trí cài đặt của người dùng. Tôi cho rằng đó là chỉ xem xét bạn đang đề cập đến? Ngoài ra, vì/data/app có thể đọc được, tôi có thể kiểm tra gói ứng dụng được đặt ở đó trước bất kỳ thứ gì khác. Từ tìm kiếm của tôi, tôi không thể tìm cách chuyển APK từ vị trí đó trừ khi sử dụng chức năng gốc ... Muốn biết nếu có cách nào ... Tôi không chắc chắn ý của bạn là gì? Chúc mừng. – brandall
Nếu nó có thể đọc được (vì nó thường là) bạn không cần root để sao chép nó vào một nơi nào đó bạn được phép ghi vào (chẳng hạn như sdcard, với sự cho phép phù hợp). Tuy nhiên,/dữ liệu/ứng dụng không phải lúc nào cũng được cài đặt. Và đôi khi tên tệp APK được thay đổi trong khi cài đặt. Bạn có thể xác định vị trí và tên được cài đặt từ /data/system/packages.xml nhưng tại thời điểm đó bạn khá sâu vào chức năng nội bộ riêng tư mà có thể không phải là bằng chứng trong tương lai. Thực sự, tải lại có lẽ là đặt cược tốt nhất của bạn - ít nhất, có đó là một tùy chọn dự phòng. –