2010-01-30 58 views
311

Tôi cố gắng để truy cập vào liên kết HTTP sử dụng HttpURLConnection trong Android để tải về một tập tin, nhưng tôi nhận được cảnh báo này trong LogCat:Cách thêm quyền hiển thị vào ứng dụng android?

WARN/System.err (223): java.net.SocketException: Permission denied (có thể thiếu sự cho phép INTERNET)

Tôi đã thêm android.Manifest.permission vào đơn đăng ký của mình nhưng vẫn đưa ra ngoại lệ tương tự.

+0

Dán nội dung cho phép hiển thị của bạn, bạn có cấp quyền cho INTERNET không? –

+0

tôi đã thêm android.Manifest.permission nhập khẩu; để ứng dụng, không có gì khác. Tôi cần thêm gì khác để cấp quyền truy cập – rob

+2

Nhìn vào câu trả lời của tôi bên dưới và xem liệu điều đó có hữu ích không và tôi không biết ý tưởng 'nhập android.Manifest.permission' sẽ làm gì cho bạn nếu bạn không có quyền INTERNET được đặt tệp AndroidManifest.xml –

Trả lời

712

Giả sử bạn không có quyền thiết lập từ LogCat mô tả lỗi của bạn, đây là nội dung của tôi cho file AndroidMainfest.xml tôi có quyền truy cập vào internet:

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

Ngoài ra, bạn nên sử dụng tốt để tải về một tập tin từ internet.

+3

Nếu bạn tìm thấy câu trả lời giải đáp câu hỏi của bạn hoặc có vẻ hữu ích, hữu ích khi chọn là "trả lời" và/hoặc upvote, nó giúp cộng đồng cho bất kỳ ai gặp phải vấn đề tương tự. Thats không chỉ hướng đến câu hỏi này, nhưng các câu hỏi khác mà bạn đã hỏi cũng là –

+0

tôi đã không biết về nó, tôi sẽ làm điều đó để chắc chắn nếu điều này sẽ giải quyết được vấn đề của tôi – rob

+0

báo cáo lại nếu bạn gặp bất cứ điều gì khác và tôi sẽ nhiều hơn vui lòng hỗ trợ. –

31

Nếu bạn đang sử dụng trình cắm thêm ADT của Eclipse để phát triển, hãy mở AndroidManifest.xml trong Trình chỉnh sửa kê khai Android (phải là hành động mặc định để mở AndroidManifest.xml từ danh sách tệp dự án).

Sau đó, chọn Permissions tab dọc theo phía dưới của trình biên tập (Manifest - Application - Permissions - Instrumentation - AndroidManifest.xml), sau đó nhấp vào Add... một Uses Permission và chọn phép mong muốn từ menu thả xuống ở bên phải, hoặc chỉ cần sao chép dán vào một cần thiết (chẳng hạn như android.permission.INTERNET cho phép bạn yêu cầu).

10

Khi sử dụng nhật thực, Thực hiện theo các bước sau

1) Kích đúp vào tệp kê khai để hiển thị nó vào trình soạn thảo
2) Nhấp vào tab quyền dưới biên tập manifest
3) Nhấp vào nút Add
4) trên hộp thoại xuất hiện Nhấp vào sử dụng quyền. (Thông thường là mục cuối cùng trong danh sách)
5) Chú ý khung nhìn xuất hiện trên mặt rigth Chọn "android.permission.INTERNET"
6) Sau đó, một loạt Ok và lưu cuối cùng.

Hope this helps

28
<?xml version="1.0" encoding="utf-8"?> 
<manifest xmlns:android="http://schemas.android.com/apk/res/android" 
package="com.photoeffect" 
android:versionCode="1" 
android:versionName="1.0" > 

<uses-sdk 
    android:minSdkVersion="8" 
    android:targetSdkVersion="18" /> 

<uses-permission android:name="android.permission.INTERNET" /> 
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" /> 
<uses-permission android:name="android.permission.ACCESS_LOCATION_EXTRA_COMMANDS" /> 
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" /> 
<uses-permission android:name="com.example.towntour.permission.MAPS_RECEIVE" /> 
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> 
<uses-permission android:name="android.permission.CALL_PHONE" /> 
<uses-permission android:name="android.permission.READ_PHONE_STATE" /> 
<uses-permission android:name="com.google.android.providers.gsf.permission.READ_GSERVICES" /> 

<application 
    android:allowBackup="true" 
    android:icon="@drawable/ic_launcher" 
    android:label="@string/app_name" 
    android:theme="@android:style/Theme.Black.NoTitleBar" > 
    <activity 
     android:name="com.photoeffect.MainActivity" 
     android:label="@string/app_name" > 
     <intent-filter> 
      <action android:name="android.intent.action.MAIN" /> 

      <category android:name="android.intent.category.LAUNCHER" /> 
     </intent-filter> 
    </activity> 
</application> 

</manifest> 
17

Sao chép dòng sau vào ứng dụng file manifest của bạn và dán trước thẻ <application>.

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

Đặt quyền bên dưới thẻ <application/> sẽ hoạt động nhưng sẽ cảnh báo bạn. Vì vậy, hãy cẩn thận để đặt nó trước khi khai báo thẻ <application/>.

+0

Kể từ khi viết nhận xét này, nó đi ** bên ngoài ** của phần tử ứng dụng nhưng trong tệp kê khai. ví dụ: ...

6

Chỉ cần thêm video này vào manifest Android của bạn:

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

Đó có thể cũng thú vị trong bối cảnh thêm sự cho phép INTERNET để ứng dụng của bạn:

Google cũng đã cho mỗi kết nối Internet ứng dụng, hiệu quả xóa quyền truy cập Internet. Ồ, chắc chắn, các nhà phát triển Android vẫn phải tuyên bố họ muốn truy cập Internet khi kết hợp ứng dụng.Nhưng người dùng không còn có thể thấy quyền truy cập Internet khi cài đặt ứng dụng và các ứng dụng hiện tại không có quyền truy cập Internet hiện có thể truy cập Internet bằng bản cập nhật tự động mà không cần nhắc bạn.

Nguồn: http://www.howtogeek.com/190863/androids-app-permissions-were-just-simplified-now-theyre-much-less-secure/

Điểm mấu chốt là bạn vẫn phải bổ sung giấy phép INTERNET trong file manifest nhưng ứng dụng sẽ được cập nhật trên các thiết bị của người dùng mà không cần yêu cầu họ cho phép mới.

42

Trong trường hợp ai đó sẽ đấu tranh với cùng một vấn đề, đó là trường hợp nhạy cảm tuyên bố, do đó, sai trường hợp có nghĩa là ứng dụng của bạn sẽ không nhận được sự cho phép.

WRONG

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

ĐÚNG

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

Vấn đề này có thể xảy ra tức. về tự động điền trong IDE

+1

Cảm ơn bạn! Tôi lãng phí cả ngày của tôi tự hỏi tại sao ứng dụng của tôi không hoạt động. Tôi mới đến android studio và vấn đề này đã không xảy ra trong Eclipse trước :) – InspiredCoder

+0

cảm ơn điều này là làm việc cho tôi @Marek Sebera –

+0

Và tôi lãng phí cả ngày của tôi tìm ra những gì thực sự khác biệt giữa chúng, OMG * Capital * và * Nhỏ * 'ANDROID.PERMISSION' và' android.permission';): p – fWd82

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