2012-11-23 13 views
7

Tôi đã modyfing ứng dụng Android của tôi, và tôi đã thử nó trên thiết bị thực tế (Chạy ứng dụng trong nhật thực) và tất cả đã làm việc tốt. Vì vậy, Khi tôi còn hài lòng về những thay đổi của tôi, tôi đã mở Manifest để sửa đổi các phiên bản dành cho phát hành nó, nhưng KHÔNG CÓ THAY ĐỔI trong Manifest một lỗi xảy ra tại dòng:Android: lỗi lạ trong Manifest

<uses-permission android:name="android.permission.INSTALL_PACKAGES" /> 

lỗi là:

Permission is only granted to system apps 

Làm cách nào có thể? Tôi đã xây dựng ứng dụng của mình nhiều lần bằng cách sử dụng dòng này.

Trả lời

18

Cảm ơn tất cả. Tôi đã giải quyết được sự cố lạ với

Project > Clean 

Bây giờ tất cả đều hoạt động tốt trở lại!

+2

Không upvote câu trả lời này - nó không có gì để làm với vấn đề thực tế, đó là ** quyền này là không có sẵn cho các ứng dụng của bên thứ ba **. Không có gì một nhà phát triển có thể làm trên một thiết bị bảo mật sẽ thay đổi thực tế đó. –

+0

Điều này trả lời câu hỏi về cách làm cho nó biên dịch lại. AFAIK INSTALL_PACKAGES là quyền cấp phépOrSystem, miễn là ứng dụng của bạn được thêm vào hình ảnh hệ thống mà thiết bị được ROM với nó sẽ hoạt động, sau đó các phiên bản tiếp theo được ký bằng cùng một khóa cũng sẽ nhận được quyền khi được cài đặt làm bản cập nhật. –

2

bạn không thể tự cài đặt gói, thậm chí không hỏi về điều đó.

sử dụng Intent cho mục đích đó:

Intent installIntent = new Intent(Intent.ACTION_VIEW); 
installIntent.setDataAndType(
    Uri.parse("file://" + context.getFilesDir().getAbsolutePath() + "/" + file_name_to_install), 
    "application/vnd.android.package-archive"); 
startActivity(installIntent); 

nếu bạn đang sử dụng Eclipse, có lẽ hầu hết nó đã sử dụng cũ/phiên bản lỗi thời của Manifest của bạn, và khi bạn mở nó, những thay đổi đã được nạp lại và đưa lên thông báo lỗi. chỉ cần xóa quyền vi phạm và sử dụng Mục đích.

+1

Tôi cần cài đặt gói ứng dụng mới từ ứng dụng của mình. Tôi sử dụng phương pháp này trong vài tháng và tôi đã không gặp phải bất kỳ vấn đề nào. Nhưng ngày hôm nay biểu hiện cho thấy lỗi này của tôi, mà không có bất kỳ thay đổi! – GVillani82

+0

android.permission.INSTALL_PACKAGES cho biết rằng ứng dụng của bạn có thể cài đặt các ứng dụng khác nhưng vì quyền này chỉ có thể được cấp cho các ứng dụng hệ thống nên ứng dụng của bạn không áp dụng. Dưới đây là một số thông tin khác: http://stackoverflow.com/questions/3476600/why-are-these-permissions-being-refused –

+2

@ Joseph82 bạn có thể đã sử dụng các phiên bản SDK cũ hơn, nhưng phiên bản hiện tại xem xét quyền 'INSTALL_PACKAGE' nguy hiểm và được thêm vào lớp "Hệ thống hoặc Đã ký".Điều đó có nghĩa là các ứng dụng của người dùng ** không thể ** sử dụng quyền này, trừ khi ứng dụng được cài đặt trong '/ system/app' hoặc được ký với chứng chỉ của nhà sản xuất – lenik

2

Vệ sinh sẽ hoạt động nếu bạn đã thay đổi tùy chọn lint của mình. Khác kiểm tra các giải pháp dưới đây.

Permission is only granted to system app

Nó nói để thay đổi Lint Cài đặt

Trong Eclipse:

Window -> Preferences -> Android -> Lint Error Checking.

Trong danh sách, hãy tìm mục nhập với ID = ProtectedPermission. Đặt mức độ nghiêm trọng thành cái gì đó thấp hơn Lỗi. Bằng cách này bạn vẫn có thể biên dịch dự án bằng Eclipse.

Trong Android Studio:

File -> Settings -> Inspections 

Dưới Android Lint, xác định vị trí Using system app permission. Bỏ chọn hộp kiểm hoặc chọn Mức độ nghiêm trọng thấp hơn Lỗi.