0

こんにちはOTAファイルをキャッシュディレクトリにダウンロードしようとしています。ファイルをキャッシュフォルダにダウンロードする

try{ otaFile = new File(Environment.getDownloadCacheDirectory().getAbsolutePath() + File.separator + "update_unsigned" + ".zip"); 

        Uri uri = Uri.parse(data.getFileUrl()); 

        DownloadManager.Request request = new DownloadManager.Request(uri); 
        request.setTitle(data.getVersionUpdate()). 
          setNotificationVisibility(DownloadManager.Request.VISIBILITY_VISIBLE_NOTIFY_COMPLETED); 
        request.setDestinationUri(Uri.fromFile(otaFile)); 


        downloadManager = (DownloadManager) context.getSystemService(DOWNLOAD_SERVICE); 

        downloadId = downloadManager.enqueue(request); 

        emitter.onSuccess("saving to " + otaFile + " id - " + downloadId); 
       } catch (Exception e) { 
        emitter.onError(new Throwable(e.getMessage())); 
       } 

私は例外に直面し、このコードを呼び出すいます: サポートされていないパスを/chche/update_unsigned.zip

マイアプリは権限次ました

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> 
<uses-permission android:name="android.permission.ACCESS_DOWNLOAD_MANAGER" />/ 
<uses-permission android:name="android.permission.ACCESS_DOWNLOAD_MANAGER_ADVANCED" /> 
<uses-permission android:name="android.permission.WRITE_INTERNAL_STORAGE" /> 
<uses-permission android:name="android.permission.ACCESS_CACHE_FILESYSTEM" /> 

をし、私のように私のAPを実行していますシステムアプリ。

また、ダウンロードマネージャにはメソッドsetDestinationToSystemCache()が隠されていますが、リフレクションで取得しようとしているときに見つけられません。

Class cls; 
        cls = Class.forName("android.app.DownloadManager"); 

        Method m; 

        m = cls.getMethod("setDestinationToSystemCache", new Class[]{}); 
        m.setAccessible(true); 
        m.invoke(null); 

ファイルをキャッシュフォルダに保存する方法は、デバイス製造で許容されるフォルダの1つのみです。

答えて

1

request.setDestinationToSystemCache();を使用すると、ファイルを/ cacheに保存できます。

request.setDestinationUri(Uri.fromFile(otaFile));では、/ cacheなどの内部ディレクトリへのパスを設定することはできません。メソッドの定義では、は、ダウンロードしたファイルのローカル宛先を設定します。外部ストレージのパスへのファイルURIはで、呼び出し元のアプリケーションにはWRITE_EXTERNAL_STORAGE権限が必要です。

関連する問題