2015-08-20 23 views
8

Tôi vẫn còn hơi bối rối về mô hình quyền thời gian chạy mới. Có bất kỳ quyền truy cập bắt buộc nào sau đây đối với thông báo đẩy Parse (GCM) yêu cầu sự cho phép thời gian chạy không?Quyền đối với Android M với Parse Đẩy Thông báo

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

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

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

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

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

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

<uses-permission android:name="com.google.android.c2dm.permission.RECEIVE" /> 

<permission android:protectionLevel="signature"   android:name="com.parse.starter.permission.C2D_MESSAGE" /> 

<uses-permission android:name="com.parse.starter.permission.C2D_MESSAGE" /> 
+0

bạn không cần phải yêu cầu sự cho phép GET_ACCOUNTS trên 6.0+ để làm cho phân tích cú pháp đẩy để làm việc. Nó được khai báo trong Manifest để nó có thể hỗ trợ Android 4.04 và thấp hơn. Trên 6.0+, quyền này được khai báo nhưng không cần phải "được cấp" – jiawen

Trả lời

-3

Theo tài liệu dành cho nhà phát triển Android, miễn là bạn xác định các quyền này trong tệp kê khai, hệ thống sẽ tự động cấp cho bạn các quyền này và sẽ không cho phép người dùng thu hồi chúng. Vì vậy, bạn không cần phải kiểm tra các điều khoản này trong thời gian chạy.

https://developer.android.com/preview/features/runtime-permissions.html

này được cho ở dưới cùng của trang trong phần bình thường Permissions.

+0

Đối số của bạn không hợp lệ. Một số trong số này không được liệt kê dưới quyền bình thường. –

1

Quyền GET_ACCOUNTS yêu cầu sự cho phép được kiểm tra trong thời gian chạy, vì nó thuộc về nhóm quyền nguy hiểm (https://developer.android.com/guide/topics/security/permissions.html#normal-dangerous).

Những người khác có quyền bình thường, và sẽ được cấp miễn là chúng được khai báo trên file manifest (https://developer.android.com/guide/topics/security/normal-permissions.html)

Nếu bạn nhận ra bạn không có sự cho phép trong thời gian chạy, bạn sẽ cần phải yêu cầu nó, sử dụng phương thức requestPermissions (Hoạt động quyền truy cập của bạn, Chuỗi [], mã yêu cầu int). Sau đó, một hộp thoại không tùy chỉnh sẽ được hiển thị cho người dùng, yêu cầu sự cho phép.

Cuối cùng, bạn cần phải ghi đè lên onRequestPermissionsResult (int requestCode, quyền String [], int [] grantResults) phương pháp trên hoạt động của bạn, kiểm tra nếu requestCode là requestCode cùng bạn gửi vào requestPermissions và nếu được sự cho phép mục tiêu là được cấp.

Có những trường hợp khác bạn cần xem xét, như khi người dùng không cấp quyền lần đầu tiên và bạn vẫn muốn hỏi họ. Để biết cách xử lý các trường hợp này, tôi khuyên bạn nên đọc: http://developer.android.com/intl/pt-br/training/permissions/requesting.html. Nó cũng có mã mẫu để yêu cầu quyền và kiểm tra kết quả

+0

Vì vậy, làm thế nào để bạn đề nghị tôi đi về nếu sự cho phép bị từ chối? –

+0

Tôi đã chỉnh sửa câu trả lời trước đó của mình với giải thích tốt hơn về điều đó –

+0

Tôi hiểu tất cả điều này nhưng làm cách nào để vô hiệu hóa thông báo đẩy phân tích cú pháp cho người dùng này? –

5

Trong số các quyền bạn đã liệt kê ở trên, GET_ACCOUNTS yêu cầu kiểm tra thời gian vì mức độ bảo vệ của nó là nguy hiểm.

Nhưng vấn đề là, trong khi quyền GET_ACCOUNTS không còn cần thiết để GCM hoạt động (bắt đầu với 7.5 Dịch vụ Play, tôi đoán), bạn vẫn cần thiết nếu bạn đang sử dụng Thông báo đẩy Parse. Có vẻ như để Parse cung cấp khả năng tương thích đầy đủ cho toàn bộ các thiết bị hỗ trợ Android (ví dụ các thiết bị không dựa trên GCM như Kindle Fire, nơi GCM không được hỗ trợ và họ phải quay trở lại thực hiện socket liên tục của riêng mình và tất nhiên các thiết bị có 4.0.3 trở xuống), Parse vẫn cần sự cho phép này và một số khác.

Một anh chàng từ Parse nói rằng:

Chúng tôi yêu cầu nó được yêu cầu, hay còn gọi là trong AndroidManifest.xml, nhưng không yêu cầu nó được cấp.

vấn đề là trong cuộc thảo luận, bạn có thể muốn xem xét các chủ đề này:

https://github.com/ParsePlatform/Parse-SDK-Android/issues/129 https://parse.com/questions/android-use-only-gcm-dont-require-additional-permissions

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