2012-11-28 16 views
19

tôi muốn thêm vào sự cho phép này để manifest Android của tôi:Giấy phép chỉ được cấp cho ứng dụng hệ thống, trong Manifest

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

Nhưng sau khi tôi dán phép này trong manifest của tôi, nó kiểm tra gạch dưới màu đỏ và nói:

phép chỉ được cấp cho các ứng dụng hệ thống

Tôi có thể làm gì?

+0

gọi API gì bạn đang sử dụng mà đòi hỏi sự cho phép này? –

+0

@ A - C Tôi đang thử hướng dẫn này. http://androidsourcecode.blogspot.in/2010/10/blocking-incoming-call-android.html –

+0

Tôi có thể thấy lý do ứng dụng này cần sự cho phép. Có một cái nhìn vào các ý kiến ​​mặc dù, những người khác đã có vấn đề này, ít nhất là trên bánh gừng. –

Trả lời

59

MODIFY_PHONE_STATE phép được cấp cho chỉ ứng dụng hệ thống.

Để biết thông tin của bạn, có 2 loại ứng dụng Android: Hệ thống & dùng

ứng dụng tài chỉ là tất cả các ứng dụng cài đặt bình thường của bạn thông qua Google Play Store, Amazon Appstore hoặc sideloading. Chúng đi vào phân vùng/dữ liệu của điện thoại Android, là bộ phận của bộ nhớ trong có sẵn cho dữ liệu người dùng và ứng dụng.

Ứng dụng hệ thống về cơ bản là các ứng dụng được cài đặt sẵn với ROM của bạn. Trong môi trường người dùng Android chuẩn, người dùng không có quyền ghi vào phân vùng/hệ thống và do đó, việc cài đặt hoặc gỡ cài đặt ứng dụng hệ thống trực tiếp là không thể.

Để cài đặt một ứng dụng như một ứng dụng hệ thống trên thiết bị Android của bạn, thiết bị của bạn phải thể được bắt nguồn từ hoặc có một sự phục hồi tùy chỉnh cài đặt (hoặc cả hai).

Điều đó được nói, lỗi đó thực sự sai vì bạn có mã và biên dịch hợp lệ sẽ hoạt động. Nó sẽ tốt hơn nếu nó đưa ra một cảnh báo thay thế. Trong Eclipse bạn có thể dễ dàng sửa chữa nó. Chỉ cần truy cập:

Cửa sổ -> Tùy chọn -> Android -> Kiểm tra lỗi Lint.

Tìm ProtectedPermission từ danh sách và thiết lập các mức độ nghiêm trọng đến một cái gì đó khác hơn là lỗi (thông tin ví dụ). Bằng cách này, dự án của bạn sẽ vẫn biên dịch.

+0

Nó hoạt động .. Cảm ơn rất nhiều để tiết kiệm thời gian của tôi – Shalini

6

MODIFY_PHONE_STATE là quyền chỉ dành cho hệ thống. Ứng dụng hệ thống được cài đặt sẵn vào thư mục hệ thống hoặc được nhà sản xuất biên soạn bằng chứng chỉ bảo mật của họ.

Do đó, nếu bạn đang cố thực hiện điều này, bạn đang cố sử dụng API không còn được hỗ trợ nữa. Với phiên bản Android 2.3+ bạn có thể theo dõi cuộc gọi đến nhưng không được phép chặn (tôi nghĩ từ liên kết bạn đã đăng những gì bạn đang cố gắng thực hiện).

vấn đề Android nếu bạn cần phải làm theo: Issue 15022Issue 14789

+0

Có, tôi đã cố gắng chặn cuộc gọi đến và vì vậy vấn đề này thực sự rất tệ. –

+0

Vậy, một số ứng dụng trên cửa hàng Play có thể thực hiện chặn cuộc gọi như thế nào? –

+0

Tôi không chặn cuộc gọi. họ nói họ làm, nhưng tất cả những gì họ có thể làm là thông báo cho người dùng (khi một số bị chặn gọi), nhưng không thể chặn hoàn toàn nó. Tất cả điều này tất nhiên trong phiên bản Android 2.3+. – Nerd

4

Lỗi này xuất hiện trong SDK 19 trở đi, khi bạn thay đổi tệp kê khai. Làm sạch và xây dựng dự án. Cần xóa lỗi này.

+1

điều này sẽ là một bình luận, không phải là một câu trả lời –

2

chỉ làm sạch dự án của bạn nó sẽ ổn như thế này: Dự án

> sạch ...

+0

nope.này sẽ không giúp đỡ trong trường hợp này. –

2

Bởi vì đây là nhà phát triển thiết bị cho phép cấp hệ thống không cấp này để các công cụ phát triển ứng dụng cũng cảnh báo chống lại cái này bạn phải chỉ cần nhấp vào dự án và làm sạch dự án mà

0

Tìm ProtectedPermission từ danh sách trong

Window -> Preferences -> Android -> Lint Error Checking. 

và đặt mức độ nghiêm trọng cho một thứ khác ngoài lỗi (ví dụ: thông tin). Bằng cách này, dự án của bạn sẽ vẫn biên dịch.

0

Có bốn loại Permission

Regular 
Dangerous 
Signed 
Signed or System 

The first two can be used by Simple Apps khác hai chỉ có thể được sử dụng bởi các ứng dụng đó là xây dựng trong khuôn khổ