12

Tôi đang cố gắng tích hợp Google Analytics cho Android. Theo số documentation here, yêu cầu thêm android.permission.WAKE_LOCK (cung cấp ghi chú nhận xét bên dưới). Tôi không hiểu rõ. Nếu tôi phát hành ứng dụng CHỈ trong Google Play Store, tôi vẫn cần điều này?Tôi có cần android.permission.WAKE_LOCK cho Dịch vụ Google Play nếu tôi chỉ phát hành trong Cửa hàng Google Play không?

Tôi thực sự không muốn yêu cầu người dùng cấp quyền bổ sung nếu điều này không thực sự cần thiết.

<!-- Optional permission for reliable local dispatching on non-Google Play devices --> 
<uses-permission android:name="android.permission.WAKE_LOCK" /> 

Đặc biệt, tôi không hiểu những gì ghi chú này không thực sự có nghĩa here:

Tùy chọn có thể yêu cầu một sự cho phép WAKE_LOCK để cải thiện cử trên không phải của Google thiết bị Play.

+1

Nó nói "Quyền tùy chọn". – Carcigenicate

+0

@Carcigenicate Có, tôi hiểu rằng, chỉ cần không rõ ràng tại sao và nó giúp gì? – user1406716

+0

Tôi không chắc chắn cách nó giúp với các cửa hàng không phải của google, nhưng điều đó có vẻ ngoài câu hỏi. Nếu họ nói rằng nó là tùy chọn và được sử dụng cho một cái gì đó mà bạn không có kế hoạch cần, tôi muốn nói rằng nó là an toàn để nói rằng bạn có thể bỏ qua nó. Lưu ý rằng nhiều ứng dụng trong cửa hàng không có quyền khóa-thức. – Carcigenicate

Trả lời

7

WAKE_LOCK

Cho phép sử dụng PowerManager WakeLocks để giữ bộ xử lý từ ngủ hoặc màn hình từ mờ.

Trên thiết bị Google Play, dịch vụ nền hầu như luôn chạy dưới dạng "Dịch vụ của Google Play", vì vậy, không yêu cầu WAKE_LOCK.

Trên thiết bị không phải của Google Play, WAKE_LOCK giúp duy trì quá trình gửi/dịch vụ của Google Analytics hoạt động để có nhiều cơ hội hơn để báo cáo/tải lên dữ liệu.

EDIT

Ngoài ra, hiện chưa rõ những gì xảy ra với điều khoản nguy hiểm trong nhóm cho phép mà không phải là những người mà người dùng có thể kiểm soát thông qua Cài đặt, chẳng hạn như SYSTEM_TOOLS.

https://commonsware.com/blog/2015/06/02/random-musings-m-developer-preview-bad.html

36

Cập nhật: Tính đến Android 6 (cấp API 23, WAKE_LOCK được phân loại như là một "normal" cho phép, có nghĩa là cho phép được tự động cấp Loại bỏ sự cho phép WAKE_LOCK thường sẽ khiến các ứng dụng để sụp đổ. (xem dưới đây) vì vậy tôi sẽ tránh làm việc đó.


tôi đang ở vị trí tương đương. tôi không muốn thêm một sự cho phép thêm vì nó sẽ làm giảm đáng kể số lượng người sử dụng đã mới nhất rsion của ứng dụng (vì các quyền mới có nghĩa là người dùng phải chọn tham gia một cách rõ ràng để nhận được bản cập nhật ứng dụng).

Tôi tin rằng mình đã tìm được giải pháp bằng cách kết hợp một vài câu trả lời trên this SO question.

Đầu tiên, thêm "công cụ" namespace để manifest

<manifest xmlns:android="http://schemas.android.com/apk/res/android" 
     xmlns:tools="http://schemas.android.com/tools"> 

Thứ hai của ứng dụng, thêm "WAKE_LOCK" phép nhưng sử dụng tùy chọn remove

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

Bây giờ, khi tôi tải lên một APK mới Tôi có thể thấy quyền không còn cần thiết:

wake lock permission removed

Quan trọng

Dường như giải pháp này có thể không còn khả thi nữa. Tôi hiện đang nhận được một số lượng lớn RuntimeExceptions được ném với thông báo "Cả người dùng 10182 lẫn quy trình hiện tại đều không có android.permission.WAKE_LOCK."

Fatal Exception: java.lang.RuntimeException 
Unable to start receiver com.google.android.gms.measurement.AppMeasurementReceiver: java.lang.SecurityException: Neither user 10182 nor current process has android.permission.WAKE_LOCK. 
+0

Kỹ thuật này phù hợp với tôi. Ngoài ra đối với các quyền mới không có tại Tệp kê khai nhưng hiển thị vào thời gian tải lên. – Masum

+2

Đây là một câu trả lời tuyệt vời. Sẽ tốt nếu Google có thể ghi lại cách tránh sử dụng quyền khóa-thức. – henry000

+0

câu trả lời tuyệt vời! tnx –

2

Khi xóa WAKE_LOCK, cũng loại bỏ AnalyticsReceiver và AnalyticsService.

Cách đó được viết trên trang web này. http://coffeee.hatenablog.com/entry/2017/11/26/035828

  1. mở AndroidManifest.xml
  2. nhấp vào tab "Marged Manifest" Merged Manifest
  3. nhấp chuột phải vào WAKE_LOCK và loại bỏ Remove WAKE_LOCK
  4. loại bỏ AnalyticsReceiver và AnalyticsService Remove Receiver and Service

Tốt Luck

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