AndroidでHttpURLConnection
を使用してファイルをダウンロードすることでHTTPリンクにアクセスしようとしていますが、LogCat
にこの警告が表示されます。
WARN/System.err(223):Java.net.SocketException:アクセス許可が拒否されました(インターネットアクセス許可がない可能性があります)
私のアプリケーションにAndroid.Manifest.permissionを追加しましたが、それでも同じ例外が発生します。
あなたのLogCat
エラーの説明からアクセス権が設定されていないと仮定すると、インターネットにアクセスできる私のAndroidManifest.xml
ファイルの私のコンテンツは次のようになります。
<manifest xlmns:Android...>
...
<uses-permission Android:name="Android.permission.INTERNET" />
<application ...
</manifest>
それ以外は、インターネットからファイルをダウンロードしてもいいでしょう。
誰かが同じ問題に苦労する場合には、 大文字と小文字を区別します ステートメントなので、間違った場合はあなたのアプリケーションが許可を得られないことを意味します。
違う
<uses-permission Android:name="Android.PERMISSION.INTERNET" />
_正しい_
<uses-permission Android:name="Android.permission.INTERNET" />
この問題は起こるかもしれません。 IDEのオートコンプリート機能
開発にEclipse ADTプラグインを使用している場合は、Android Manifest EditorでAndroidManifest.xml
を開きます(プロジェクトファイルリストからAndroidManifest.xml
を開く場合のデフォルトのアクションになります)。
その後、エディタの下部にあるPermissions
タブを選択し(Manifest - Application - Permissions - Instrumentation - AndroidManifest.xml
)、次にAdd...
a Uses Permission
をクリックして右側のドロップダウンから必要な権限を選択するか、必要な権限をコピーして貼り付けます(必要なAndroid.permission.INTERNET
権限など)。 。
<?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>
次の行をアプリケーションマニフェストファイルにコピーして、<application>
タグの前に貼り付けます。
<uses-permission Android:name="Android.permission.INTERNET"/>
<application/>
タグの下にパーミッションを設定することはできますが、警告が出ます。そのため、<application/>
タグ宣言の前に配置するように注意してください。
Eclipseを使用している場合は、次の手順に従ってください。
1)マニフェストをダブルクリックしてエディタに表示します
2)マニフェストエディタの下のパーミッションタブをクリックしてください。
3)追加ボタンをクリック
4)ダイアログが表示されたらクリックしてください。 (通常はリストの最後の項目)
5)右側の画面に表示されるビューに注目してください。[Android.permission.INTERNET]を選択します。
6)次に一連のOkを保存し、最後に保存します。
お役に立てれば
これをAndroidのマニフェストに追加するだけです。
<uses-permission Android:name="Android.permission.INTERNET"/>
あなたのアプリケーションにインターネットのパーミッションを追加するという点でも興味深いことでしょう。
グーグルはまた、各アプリにインターネットアクセスを許可し、事実上インターネットアクセス許可を削除した。ああ、確かに、Android開発者はまだアプリをまとめるときにインターネットアクセスが欲しいと宣言しなければなりません。ただし、アプリをインストールするときにインターネットアクセス許可がユーザーに表示されなくなり、インターネットにアクセスできない現在のアプリでは、ユーザーに確認せずに自動更新でインターネットにアクセスできるようになりました。
肝心なのは、マニフェストファイルにインターネット権限を追加する必要があるということですが、アプリケーションはユーザーに新しい権限を要求せずに更新されます。
遅れていますが、答えを完成させたいのですが。
manifest.xml
にパーミッションが追加されています
<uses-permission Android:name="Android.permission.INTERNET"/>
これは 標準のアクセス許可 許可がユーザーに要求されない場合には十分です。しかし、それが危険な許可である場合にのみ明示するために許可を追加するだけでは十分ではありません。 Android doc を参照してください。カメラのように、保存許可。
<uses-permission Android:name="Android.permission.CAMERA"/>
user から許可を得る必要があります。私は RxPermission libraryを使用して許可を求めています。許可を求めるために書かなければならないのは長いコードだからです。
RxPermissions rxPermissions = new RxPermissions(this); // where this is an Activity instance // Must be done during an initialization phase like onCreate
rxPermissions
.request(Manifest.permission.CAMERA)
.subscribe(granted -> {
if (granted) { // Always true pre-M
// I can control the camera now
} else {
// Oups permission denied
}
});
このライブラリをアプリに追加する
allprojects {
repositories {
...
maven { url 'https://jitpack.io' }
}
}
dependencies {
implementation 'com.github.tbruyelle:rxpermissions:0.10.1'
implementation 'com.jakewharton.rxbinding2:rxbinding:2.1.1'
}