我目前正在运行 Marshmallow ,我已将我的应用程序设置为使用以下路径将文件下载到手机的下载文件夹中:
$timeout
和carousel-panel > ng-transclude > * {
-webkit-transition: opacity 0.5s ease-in-out;
-moz-transition: opacity 0.5s ease-in-out;
-ms-transition: opacity 0.5s ease-in-out;
-o-transition: opacity 0.5s ease-in-out;
opacity: 1;
}
carousel-panel.fade > ng-transclude > * {
opacity: 0;
}
。一切正常,我可以访问下载的文件。
但问题是,文件只能通过手机使用文件浏览器访问,而不能通过Android应用程序通过默认的Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOWNLOADS)
文件夹访问。我了解您可以使用Android AsyncTask
自动执行此操作,但我希望保留Downloads
的当前实现,而不必使用DownloadManager
。
我的问题是,有没有办法可以简单地刷新"或者"更新" AsyncTask
文件夹中的内容是什么,以便它们显示使用Android下载应用程序?
我也尝试使用媒体扫描程序Intent(刷新图库),但根据我的理解,这不适用于 Marshmellow 。
DownloadManager
答案 0 :(得分:3)
有没有一种方法可以简单地“刷新”或“更新”下载文件夹中的内容,以便它们显示在Android下载应用程序中?
“下载”应用程序仅显示其自身ContentProvider
中的内容,而后者又由DownloadManager
下载的内容驱动。它没有显示任何特定设备上目录的内容,并且没有记录或支持ContentProvider
进行独立访问。
我也尝试使用媒体扫描程序Intent(刷新图库),但据我了解,这对Marshmellow不起作用。
即,使用MediaScannerConnection
和scanFile()
,即可让查询MediaStore
的应用查看您的文件。这包括MTP守护进程; MTP是桌面操作系统查看Android设备外部存储内容的方式。这些都不会直接影响下载应用。
答案 1 :(得分:2)
如果没有DownloadManager类,我不这样做。我在AsyncTask中使用以下内容
Transform planet; // The planet to fly around
float speed = 5; // The movementSpeed
Vector3 flyDirection; // The direction, it flies around
void Start()
{
planet = GameObject.FindGameObjectWithTag("Planet").transform; // Get the transform of the planet
Vector3[] directions = { Vector3.left, Vector3.right, Vector3.up, Vector3.down }; // The possible directions to fly
flyDirection = directions[Random.Range(0, directions.Length)]; // Get a random fly direction
}
void Update()
{
transform.RotateAround(planet.position, flyDirection, speed * Time.deltaTime); // Fly around the planet
transform.Rotate(..); // Rotate the Object to the fly direction
}
这将使文件显示在6.0上的Downloads应用程序中,即使该文件是在本地创建的。