2013-12-14 13 views
34

Tôi đang gặp sự cố với sqlite db trong Android. Nhưng khi tôi thực hiện một nghiên cứu nhanh trên internet, tôi nghi ngờ rằng vấn đề không liên quan đến sqlite mà là người dùng hệ thống. Ứng dụng của tôi không được công nhận là người dùng được ủy quyền để truy cập các chức năng của db. Tôi đã cố gắng áp dụng các giải pháp đề xuất có thể có trong ngăn xếp tràn nhưng không ai trong số chúng tạo ra sự khác biệt. Đây là LogCat tôi đang đối mặt mỗi khi tôi cố gắng sử dụng chức năng db.Quyền từ chối: điều này yêu cầu android.permission.INTERACT_ACROSS_USERS_FULL

12-14 02:35:17.721 2953-3355/? E/DatabaseUtils﹕ Writing exception to parcel 
java.lang.SecurityException: Permission Denial: get/set setting for user asks to run as user -2 but is calling from user 0; this requires android.permission.INTERACT_ACROSS_USERS_FULL 
at com.android.server.am.ActivityManagerService.handleIncomingUser(ActivityManagerService.java:13082) 
at android.app.ActivityManager.handleIncomingUser(ActivityManager.java:2038) 
at com.android.providers.settings.SettingsProvider.callFromPackage(SettingsProvider.java:577) 
at android.content.ContentProvider$Transport.call(ContentProvider.java:279) 
at android.content.ContentProviderNative.onTransact(ContentProviderNative.java:273) 
at android.os.Binder.execTransact(Binder.java:388) 
at dalvik.system.NativeStart.run(Native Method) 

Tôi cố gắng thêm phép

android.permission.INTERACT_ACROSS_USERS_FULL 

nhưng vẫn không có âm thanh. Điều kỳ lạ là khi tôi cố gắng thêm quyền INTERNET Android Studio 0.3 (tôi sử dụng ide) cho thấy tôi có thể cho phép tôi có thể chọn. Nhưng khi nói đến quyền INTERACT_ACROSS_USERS_FULL nó hoạt động như nó không có ý tưởng về sự cho phép này. Thiết bị thử nghiệm của tôi là Samsung S4 chạy trên 4.3.

Tôi cho rằng tôi không phải là người duy nhất cố gắng sử dụng db trên Android. Vì vậy, có một giải pháp.

Tôi có thể thêm INTERACT_ACROSS_USERS_FULL quyền vào ứng dụng của mình bằng cách nào?

+0

http://stackoverflow.com/questions/19756727/what-do-i-do-about-this-requires-android-permission-interact-across-users-full – 5er

+0

Ok, tôi thấy bài đăng này một vài lần . Nhưng nó có nghĩa gì? Làm thế nào tôi có thể cung cấp cho ứng dụng của tôi chữ ký giống như hệ thống? – gurkan

+0

Bạn sẽ phải hoặc là * là người sáng tạo hoặc hệ thống của họ, hoặc thuyết phục họ ký vào ứng dụng của bạn - không ai trong số đó là thực tế đối với hầu hết các nhà phát triển, nghĩa là bạn không thể. Nó thực sự có vẻ như bạn đang làm một cái gì đó không cần thiết lẻ.Bạn đã cố gắng xây dựng một ví dụ cơ sở dữ liệu đơn giản, hẹn hò từ những ngày trước khi hỗ trợ đa người dùng? –

Trả lời

18

Theo câu trả lời này: android.permission.INTERACT_ACROSS_USERS_FULL is a signature level permission. Ứng dụng của bạn sẽ không thể sử dụng cho đến khi và trừ khi nó có cùng chữ ký với hệ thống.

Đó không phải là thứ bạn có thể đạt được trừ khi bạn là người tạo hoặc xây dựng hệ thống hoặc cộng tác với họ sao cho họ sẵn sàng ký apk của bạn với chứng chỉ của họ. Nói cách khác, đây là giới hạn cho hầu hết các nhà phát triển.

+10

Tôi có thêm quyền này hay không, tại sao một phản hồi phức tạp như vậy ? – Siddharth

+0

Như câu trả lời đề cập, chúng tôi không thể thêm quyền này vào tệp kê khai Android của chúng tôi trừ khi ứng dụng của bạn có thể truy cập chữ ký cấp hệ thống trên thiết bị của bạn. Nói cách khác (a.f.a.i.k.), tính năng này chỉ có thể được các OEM thiết bị sử dụng. – SamSPICA

+2

Trên thiết bị Samsung, tôi có ngoại lệ nếu tôi không sử dụng. Trên một samsung không nếu tôi sử dụng nó tôi nhận được một ngoại lệ. Tôi phải làm gì trong cae này? – Siddharth

0

Tôi gặp vấn đề tương tự và nghĩ rằng tôi có thể giúp bạn. Tôi đã đăng ký ứng dụng của mình với kho khóa sản xuất của mình, nhưng đã sử dụng gỡ lỗi Eclipse để tải nó vào điện thoại của tôi. Gỡ lỗi Eclipse sử dụng debug.keystore mà không khớp với chữ ký của khóa sản xuất của bạn và ném lỗi này. Sử dụng kho khóa gỡ lỗi thay vì để thử nghiệm hoặc gửi apk cho chính bạn và tải xuống điện thoại của bạn.

0

Tôi gặp lỗi này khi tôi thay đổi minSdkVersion từ 8 đến 11 trong Tệp kê khai của mình. Tôi đã đổi nó thành 8 hoặc 9 và không còn lỗi nữa.

Hãy thử thay đổi minSdkVersion trong tệp kê khai của bạn. Tôi đã có thể lặp lại kết quả lỗi và lỗi với các phiên bản 10, 11 và 12 (ứng dụng của tôi bị treo và hiển thị "yêu cầu android.permission.INTERACT_ACROSS_USERS_FULL" trong LogCat)

4

Tôi gặp lỗi android.permission.INTERACT_ACROSS_USERS_FULL vì tôi có một số xung đột trong thư mục bin bin của dự án. Tôi đã thực hiện một số thay đổi đối với id gói ứng dụng của tôi và tệp app-file-1.apk trong thư mục bin không khớp với dự án.

Tôi đã thực hiện dự án > sạch và kiểm tra xem thư mục bin đã được xóa và được tạo lại và bây giờ nó hoạt động.

+1

Cảm ơn bạn, tôi đã gặp lỗi này khi cài đặt Xamarin cập nhật và điều này thực sự hữu ích. – WickedW

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