2011-12-21 19 views
2

DownloadManagerを使用して、Mobile/4G接続を使用しようとしたときに私が作成しているが、この問題を実行しているダウンロードをキューに入れています。私はAndroid 2.3.4の携帯電話を使用しています。私のコードは2.3.3 APIを使用しています。それはしかし、ダウンロードしようとするたびにAndroid DownloadManager 'Download Requires Network'エラー

私は

request.setAllowedNetworkTypes(Request.NETWORK_MOBILE); 

(私は4G/3Gを使用する接続を強制したい)は、次のコマンドをやっている、それは上場DownloadManagerでダウンロードを置くが、それは永遠に残ります「進行中」のステータスで、上部にエラーが表示され、ファイル名と「ダウンロードが必要です」というエラーが表示されます。

私はさらに調査し、logcatでログを見るために私のデバイスを接続した場合、それはダウンロードしようとしたとき、私は次のエラーを参照してください。

は、ダウンロード92の要求を中止:ダウンロードは、現在のネットワークタイプを使用しないように要求されました

I次の権限を持っている:それは何ができるかの

android.permission.WRITE_OWNER_DATA 
android.permission.READ_OWNER_DATA 
android.permission.WRITE_EXTERNAL_STORAGE 
android.permission.INTERNET  
android.permission.ACCESS_NETWORK_STATE 
android.permission.ACCESS_WIFI_STATE 
android.permission.CHANGE_WIFI_MULTICAST_STATE 
android.permission.CHANGE_NETWORK_STATE 
android.permission.CHANGE_WIFI_STATE 

任意のアイデア?私はまだ許可がありませんか?ネットワーク接続の使用のみを指定するために制御する必要がある別の設定がありますか?

EDIT: 私はこれを新しいGalaxyタブレットで試しました。これは私がこのデバイスを使用して気付いた動作です.WiFiがオンで接続されている場合、NETWORK_MOBILEを使用するように指定するとダウンロードできません。 Wi-Fiがオフになっているか接続されていない場合、4G接続を使用しても問題ありません。私はこれがデバイスによって行われているセキュリティ機能だと思っています。これは無効にすることができますか?

+0

メインスレッドでDownloadManagerを使用していますか? –

+0

私は以下のような活動をしています。 インテントi =新しいインテント(); i.setAction(DownloadManager.ACTION_VIEW_DOWNLOADS); startActivity(i); また、私は役に立たないようにしてみました: ConnectivityManager cm =(ConnectivityManager)getBaseContext()。getSystemService(Context.CONNECTIVITY_SERVICE); cm.startUsingNetworkFeature(ConnectivityManager.TYPE_MOBILE、 "enableHIPRI"); – azdragon2

+0

DownloadManagerはApiレベル9(2.3 Gingerbread)まで利用できなかったので、2.3 apiを使用していることを意味しますか? –

答えて

1

このエラーは、データ接続がない(Wi-Fiに接続されているかどうかは関係ありません)場合に発生します。 NETWORK_MOBILE はそれ自身でと指定することはできますが、データ接続が現在機能していないときにダウンロードを試みると、「ネットワークにダウンロードが必要です」というエラーが表示されます。

もう一度データ接続を取得すると、接続が再度確立されるまで歩き回ることになります。 4G LTE4小節ターン青の代わりにの代わりにトップバーのアイコンがDroid Bionicの電話機に接続されていることがわかります。

+0

説明は参考になりますか? – Amir

1

あなたのダウンロードマネージャの設定方法はわかりませんが、これはパスでどのように使用されたのですか?

private long enqueue; 
private DownloadManager dm; 

public void onClick(View view) { 
    dm = (DownloadManager) getSystemService(DOWNLOAD_SERVICE); 
    Request request = new Request(
      Uri.parse("File URL")); 
    enqueue = dm.enqueue(request); 

} 

public void showDownload(View view) { 
    Intent i = new Intent(); 
    i.setAction(DownloadManager.ACTION_VIEW_DOWNLOADS); 
    startActivity(i); 
} 
+0

はい、それは私が使っているものです。 dm =(DownloadManager)getSystemService(DOWNLOAD_SERVICE); DownloadManager.Request request = new DownloadManager.Request(resource); request.setAllowedNetworkTypes(Request.NETWORK_MOBILE); long id = dm.enqueue(request); 私はそれを表示するために同じ正確な型のメソッドを使用しています。 – azdragon2

+0

私と一緒にこれを見てくれてありがとう。私が指定している限り、すべてがDownloadManagerから正常に動作します:request.setAllowedNetworkTypes(Request.NETWORK_WIFI); OR request.setAllowedNetworkTypes(Request.NETWORK_MOBILE | Request.NETWORK_WIFI);それは、私がRequest.NETWORK_MOBILEだけを使用しようとするときです。 – azdragon2