Tôi hiện đang sử dụng quyền READ_PHONE_STATE trong Android để tạm dừng trình phát đa phương tiện của mình khi có cuộc gọi và tiếp tục phát lại khi cuộc gọi kết thúc. Sự cho phép dường như làm cho nhiều người sợ, vì vậy tôi đã tự hỏi liệu có thay thế nào để bắt đầu và dừng cuộc gọi điện thoại mà không có nó. Bất kỳ trợ giúp được đánh giá cao. Cảm ơn!Thay thế quyền READ_PHONE_STATE để nhận thông báo về cuộc gọi
Trả lời
Nếu bạn muốn điều chỉnh đầu ra âm thanh của mình để đáp ứng điều gì đó khác muốn thực hiện đầu ra âm thanh (ví dụ: cuộc gọi điện thoại đến), hãy xem trong số audio focus support của Android. READ_PHONE_STATE
, như đã nói, là một chút cho phép đáng sợ. Hơn nữa, nó chỉ đề cập đến các cuộc gọi điện thoại và không phải những thứ khác có thể cần khả năng tương tự (ví dụ: các cuộc gọi VOIP, vì AFAIK không liên quan đến công cụ READ_PHONE_STATE
-kích hoạt).
Thật không may, tiêu điểm âm thanh không thay thế cho READ_PHONE_STATE. Ứng dụng của tôi phải sử dụng cả hai. Ứng dụng điện thoại chuẩn trên Galaxy S3 I9300/Android 4.3 của tôi dường như không yêu cầu tiêu điểm âm thanh. Lớp TelephonyManager cung cấp cho bạn một cách để phát hiện kết thúc cuộc gọi điện thoại (bằng cách gửi cập nhật trạng thái CALL_STATE_IDLE). AudioManager dường như không làm bất cứ điều gì tương tự, vì vậy ngay cả khi tập trung âm thanh có thể được sử dụng, nó sẽ không hữu ích. Và, từ những gì tôi thấy trong tài liệu, dường như không có quyền hạn hẹp hơn READ_PHONE_STATE cho phép ứng dụng đọc trạng thái điện thoại nhưng không cho phép thông tin cuộc gọi. Nếu tôi sai về bất kỳ điều này, xin vui lòng sửa tôi.
Thật không may, tiêu điểm âm thanh không thay thế cho READ_PHONE_STATE. Ứng dụng của tôi phải sử dụng cả hai. Ứng dụng điện thoại chuẩn trên Galaxy S3 I9300/Android 4.3 của tôi dường như không yêu cầu tiêu điểm âm thanh. Lớp TelephonyManager cung cấp cho bạn một cách để phát hiện kết thúc cuộc gọi điện thoại (bằng cách gửi cập nhật trạng thái CALL_STATE_IDLE). AudioManager dường như không làm bất cứ điều gì tương tự, vì vậy ngay cả khi tập trung âm thanh có thể được sử dụng, nó sẽ không hữu ích. Và, từ những gì tôi thấy trong tài liệu, dường như không có quyền hạn hẹp hơn READ_PHONE_STATE cho phép ứng dụng đọc trạng thái điện thoại nhưng không cho phép thông tin cuộc gọi. Nếu tôi sai về bất kỳ điều này, xin vui lòng sửa tôi.
- 1. Android: Tìm các cuộc gọi API yêu cầu quyền
- 2. Nhận thông báo về thay đổi trang trong UIWebView
- 3. Được thông báo về các cuộc gọi phương thức trong .NET
- 4. Làm thế nào để chặn cảnh báo "Có thể được thay thế bằng cuộc gọi foreach"
- 5. Nhận nội dung: AJAX và cuộc gọi HTTP "thông thường"
- 6. Silverlight: Cách nhận thông báo về thay đổi trong phần thừa kế DependencyProperty
- 7. Thông báo cảnh báo Javascript Thay thế
- 8. Làm thế nào để thay đổi toàn bộ mẫu thông báo bản quyền cho Xcode?
- 9. Nhận các quy ước về cuộc gọi từ thông tin DWARF
- 10. Quyền đầy đủ của Facebook AccessToken thay thế cho mã thông báo truy cập ngoại tuyến
- 11. Android 8 yêu cầu READ_PHONE_STATE khi gọi SmsManager.sendTextMessage()
- 12. Nhận mã thông báo được ủy quyền cho Lịch O365
- 13. Thông báo về thay đổi đối tượng đốm màu xanh
- 14. Nhận thông báo khi DTE.ActiveDocument thay đổi
- 15. Tại sao Cordova Plugin Media cần quyền READ_PHONE_STATE?
- 16. Cách nhận thông báo về thay đổi địa chỉ IP tự động
- 17. Quyền của Android: Cuộc gọi điện thoại: đọc trạng thái điện thoại và nhận dạng
- 18. Ủy quyền qua mã thông báo JWT
- 19. Nhận thông báo về chấm dứt quá trình Java
- 20. Tại sao ứng dụng của tôi có quyền READ_PHONE_STATE mặc dù nó không được khai báo trong tệp kê khai?
- 21. Để thực hiện cuộc gọi API có mã thông báo oAuth
- 22. Làm thế nào để được thông báo về tình trạng mạng wifi thay đổi?
- 23. Javascript Thông báo với sự trở về từ xác nhận
- 24. Cách nhận thông báo khi thông báo được thông báo
- 25. Thông dịch dữ liệu cuộc gọi
- 26. Không thể thay thế mã thông báo làm mới trong oauth2 khi nhận mã thông báo truy cập mới
- 27. Làm cách nào để thay thế thông báo MPMoviePlayer?
- 28. C++ chức năng cuộc gọi nhận dạng
- 29. Cách nhận thông báo về sự kiện thẻ SD?
- 30. Tại sao findFragmentById trả về đoạn cũ trước khi cuộc gọi thay thế FragmentLayout?
Tôi nghĩ rằng [hỗ trợ lấy nét âm thanh] (http://developer.android.com/training/managing-audio/audio-focus.html) có nghĩa vụ xử lý việc này, mặc dù tôi chưa thử nghiệm phần đó của SDK. – CommonsWare
Cảm ơn bạn. Tôi sẽ xem xét điều này. – codeman
Đã hoạt động! Nếu bạn thêm nó như là một câu trả lời, tôi sẽ chấp nhận nó. Cảm ơn! – codeman