インターネット アクセスは Android 1.6 では機能しませんが、2.0/2.1/2.2 では機能します

StackOverflow https://stackoverflow.com/questions/4219211

  •  26-09-2019
  •  | 
  •  

質問

Androidアクティビティでjsoup(1.3.3)を使用してHTMLを解析しようとしています。このコードを呼び出すと

Jsoup.connect("http://www.google.com").get();

Android 2.1 と 2.2 では正常に動作しますが、1.6 では「java.io.IOException:」が発生します。403 URL 読み込みエラー」。

エミュレータを使用してこれをテストしているところ、admob 広告も 1.6 では表示されませんが、2.0、2.1、2.2 では動作することに気付きました。

1.6 エミュレータで Web ブラウザを使用すると機能するので、コードのどこかに問題があると確信しています。

2.0 以降では必要のない、1.6 のインターネット アクセスに必要な追加の許可はありますか?

私のマニフェスト ファイルはこのように構成されています。uses-permission タグの位置は影響しますか?

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

<application android:icon="@drawable/icon" 
android:label="@string/app_name" 
android:theme="@android:style/Theme.NoTitleBar" 
android:name="blahblah" 
android:description="@string/app_desc">

    <activity android:label="@string/app_name" android:name=".activities.MainMenu">
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />
            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>

<activity android:name=".activities.FullList" android:label="@string/app_name"/>

<!-- The application's publisher ID assigned by AdMob -->
<meta-data android:value="blahblahblah" android:name="ADMOB_PUBLISHER_ID" />

</application>
<uses-sdk android:minSdkVersion="4"/>

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

</manifest>

Jsoup.connect() メソッドを使用する hello world 画面だけで新しいプロジェクトを最初から作成しようとしましたが、同じ 1.6 エミュレータで正常に動作するため、コードの問題に違いありませんが、理解できません。

役に立ちましたか?

解決

JSOUP が内部で使用する HTTPURL接続. 。ここにあります 行スロー例外.

インターネット接続は正常であり (そうでないと、すぐに例外がスローされます)、サーバーから次のような応答が返されます。 403 HTTP 禁止

何らかのログインが行われているのでしょうか?同じデバイス/エミュレータ上のブラウザで同じ URL を開くことができることを確認してください。

他のヒント

スクリプトの終わり近くに挿入/用途-SDKを試すか、角括弧で囲まれて/削除の使用許可を試してみてください。

  私はJsoup.connect()メソッドを使用するだけでハローワールド画面で最初から新しいプロジェクトを作成しようとしましたし、それがコードの問題でなければなりませんが、私はできませんので、それは、同じ1.6エミュレータ上の罰金に動作しますそれを把握ます。

(「テスト」ボタンを追加し、ANRのタイムアウトが発生したりする場合)初期のアプリケーションの起動時に、このテストの使用量を入れてみてください。

は、アプリケーションのコピーを作成してから多くのことをコメント

動作しないあなたの完全なアプリケーションあなたの最小限のテストの間のどこかには、重要な違いがあります。再帰的違いを分割し、征服する、それ...

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top