私はそれについてたくさん検索しましたが、答えは見つかりませんでした。
ファイルをダウンロードしたい(URL、宛先、ファイル名を指定)。AsyncTast クラスを拡張するクラスがあります。Wi-Fi接続では問題なく動作しますが、モバイルデータ(G、3g、H)では動作しません!理由がわからない、気が狂いそうだ。
誰かが私と同じまたは同様の問題を抱えたことはありますか? ありがとう!
以下にコードを投稿します。ありがとうございました
public class AsyncDownloader extends AsyncTask<String, Integer, String> {
@Override
protected String doInBackground(String... sUrl) {
try {
Log.v("Downloader", "Source: " + sUrl[0]);
Log.v("Downloader", "Destin: " +sUrl[1]+"/" + sUrl[2]);
URL url = new URL(sUrl[0]);
URLConnection connection = url.openConnection();
connection.connect();
// this will be useful so that you can show a typical 0-100% progress bar
int fileLength = connection.getContentLength();
// download the file
InputStream input = new BufferedInputStream(url.openStream());
OutputStream output = new FileOutputStream(sUrl[1]+"/" + sUrl[2]);
byte data[] = new byte[1024];
long total = 0;
int count;
while ((count = input.read(data)) != -1) {
total += count;
// publishing the progress....
// publishProgress((int) (total * 100 / fileLength));
output.write(data, 0, count);
}
output.flush();
output.close();
input.close();
} catch (Exception e) {
}
return null;
}
}
主な活動から..
AsyncDownloader downloader = new AsyncDownloader();
downloader.execute("http://....", "...destination...", "...filename...");
宛先ディレクトリで時々ファイルを見つけましたが、完全にダウンロードされていないか、0 kB です..
AndroidManifest.xml には次のものがあります。
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.READ_PHONE_STATE"/>
<uses-permission android:name="android.permission.CALL_PHONE" />
この関数を使用して接続を確認します(うまくいくようです):
public boolean isOnline() {
ConnectivityManager cm =
(ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE);
return cm.getActiveNetworkInfo() != null &&
cm.getActiveNetworkInfo().isConnectedOrConnecting();
}
LogCat (非常に長い - 完全): http://pastebin.com/EL4DREwB LogCat (短い、必須 - 最初から最後までのアプリ ランタイム): http://pastebin.com/wPYDQH3P