0

他の回答を確認しましたが、このエラーの解決にはなりませんでした。たぶん私は何か他のことを間違っています。

これが私のコードです:

    void uploadPic() throws FileNotFoundException
{
    FileInputStream fis = new FileInputStream(path);
    FTPClient con = new FTPClient();
    int bytesAvailable;
    try
    {
        con.connect("ftp://ftp.drivehq.com/");
        Toast.makeText(this, "Connected to FTP", Toast.LENGTH_SHORT).show();
        if (con.login("x", "x"))
        {
            Toast.makeText(this, "Logged in", Toast.LENGTH_SHORT).show();
            con.enterLocalPassiveMode(); // Active mode doesn't really work on Android
            bytesAvailable = fis.available();
            byte[] barray = new byte[bytesAvailable];
            fis.read(barray);
            ByteArrayInputStream in = new ByteArrayInputStream(barray);
            boolean result = con.storeFile("/CameraUpload.jpg", in);
            in.close();
            if (result) Log.v("Upload Result", "Succeeded");
        }
    }
    catch (Exception e)
    {
        e.printStackTrace();
    }
}

プロジェクトに INTERNET 権限を追加しました。logcat には次のエラーが表示されます。

android.os.NetworkOnMainThreadException
W/System.err(17531):    at android.os.StrictMode$AndroidBlockGuardPolicy.onNetwork(StrictMode.java:1099)
W/System.err(17531):    at java.net.InetAddress.lookupHostByName(InetAddress.java:391

Wifi経由でインターネットに接続しています。

4

2 に答える 2

1

メインスレッドからネットワーク操作(FTPなど)を実行しようとすると、この例外がスローされるようです。これは、パフォーマンス上の理由から許可されていません(これにより、時間がかかる可能性のあるアクションを実行するときに、アプリケーションがユーザーにロックされていないように見えます)。Honeycomb以降を使用している場合は、接続を確立するコードを独自の子スレッドに移動する必要があります。

http://developer.android.com/reference/android/os/NetworkOnMainThreadException.html

http://developer.android.com/guide/practices/design/responseness.html

于 2012-06-11T09:38:54.160 に答える
0

ほとんどの場合、このエラーは、デバイスがftp.drivehq.comそのIPアドレスに解決できないことを意味します。エラーログの一部しか貼り付けていないので、はっきりとは言えません。ネットワーク接続があり、DNSが正しく機能していることを確認してください。たとえば、Androidブラウザを介してこの同じサイトに接続できるかどうかを確認してください。

于 2012-06-11T08:39:21.380 に答える