Trong một ứng dụng, tôi đã cung cấp nội dung sau đây khai báo trong AndroidManifest tôi:Yêu cầu sự cho phép đọc từ ContentProvider của riêng tôi trong ứng dụng khác
<provider android:name="com.example.MyProvider"
android:label="@string/provider_name"
android:authorities="com.example"
android:readPermission="com.example.permission.READ"
/>
Và một phép yêu cầu ứng dụng để sử dụng nó:
<uses-permission android:name="com.example.permission.READ" />
Nhưng khi chạy mã này:
ContentResolver resolver = this.context.getContentResolver();
Cursor results = resolver.query(BaseballCardContract.CONTENT_URI, BaseballCardContract.PROJECTION, null, null, null);
Tôi nhận được thông báo lỗi sau:
E/DatabaseUtils (1009): java.lang.SecurityException: Permission từ chối: đọc bbct.android.common.BaseballCardProvider nội dung uri: //bbct.android.baseballcard/baseball_cards từ pid = 996, uid = 10046 yêu cầu com.example.permission.READ hoặc cấpUriPermission()
Từ những gì tôi có thể nói, tôi yêu cầu sự cho phép cần thiết. Tôi đang thiếu gì ở đây? Tôi cần xem xét điều gì khác?
Cảm ơn bạn đã đăng câu trả lời cho câu hỏi dài bị lãng quên của tôi. Đây là giải pháp mà tôi đã tìm thấy trước đây, vì vậy tôi rất vui khi bạn dành thời gian để thêm nó vào đây. Tôi hy vọng nó sẽ hữu ích cho người dùng trong tương lai. Ngoài ra, tôi cũng đã thêm thuộc tính 'android: protectionLevel =" signature "' vào thẻ '' để chỉ các ứng dụng của riêng tôi mới có thể được cấp quyền. –
Tôi luôn nghĩ rằng mức "chữ ký" này là mặc định khi nó được cấp cho người dùng xác định quyền, nhưng tôi nhanh chóng đọc tài liệu và không thể tìm thấy bất kỳ thông tin rõ ràng nào về chủ đề đó. Dù sao, có vẻ như không có hại trong việc đưa nó vào định nghĩa của bạn, chỉ để chắc chắn. Cảm ơn vì bình luận đó! – baske
FYI bài đăng trên blog này dẫn đến câu trả lời này: https://commonsware.com/blog/2018/02/06/vet-your-manifest.html –