04-20-2016 11:11 PM
04-21-2016 02:32 AM
04-22-2016 09:01 AM
You can also use AndroidJavaObject,AndroidJavaClass and AndroidJavaProxy classYes, see http://docs.unity3d.com/Manual/PluginsForAndroid.html.
04-26-2016 12:06 PM
Sample Code:
currentActivity.Call ("runOnUiThread", new AndroidJavaRunnable (() => {
try {
AndroidJavaClass uriClass = new AndroidJavaClass ("android.net.Uri");
AndroidJavaObject uriObject = uriClass.CallStatic<AndroidJavaObject> ("parse", "http://website.com/video.mp4");
AndroidJavaObject request = new AndroidJavaObject ("android.app.DownloadManager$Request", uriObject);
AndroidJavaObject downloadManager = new AndroidJavaClass ("android.app.DownloadManager");
downloadManager = currentActivity.Call<AndroidJavaObject> ("getSystemService", "DOWNLOAD_SERVICE");
long downloadID = downloadManager.CallStatic<long> ("enqueue", request);
_text.GetComponent<UnityEngine.UI.Text>().text = downloadID.ToString();
} catch (System.Exception e) {
_text.GetComponent<UnityEngine.UI.Text>().text = e.ToString();
}
AndroidJavaObject toast = new AndroidJavaObject("android.widget.Toast",currentActivity);
toast.CallStatic<AndroidJavaObject>("makeText",currentActivity,"good",(1)).Call("show");
}));
}
05-03-2016 06:40 PM
05-03-2016 11:50 PM
05-03-2016 11:52 PM
10-25-2016 03:54 AM
Hi There,
made this work by changing:
"DOWNLOAD_SERVICE" to "download"
CallStatic ("enqueue", request); to Call("enqueue", request);
Have you made any progress on this script? i would really like a robust script that allow you to set the filename, path and get some feedback on the download progress.
Thx Tom
10-25-2016 04:04 PM
package com.yourcompany.modulename;
import android.content.Context;
import android.app.DownloadManager;
import android.database.Cursor;
import android.net.Uri;
public class DownloadHelper
{
private Context mContext;
private DownloadManager manager;
public DownloadHelper(Context mContext) {
this.mContext = mContext;
}
private int downloadProgress;
public int GetDownloadProgress(long downloadId)
{
DownloadManager.Query q = new DownloadManager.Query();
q.setFilterById(downloadId);
Cursor cursor = manager.query(q);
cursor.moveToFirst();
int bytes_downloaded = cursor.getInt(cursor
.getColumnIndex(DownloadManager.COLUMN_BYTES_DOWNLOADED_SO_FAR));
int bytes_total = cursor.getInt(cursor.getColumnIndex(DownloadManager.COLUMN_TOTAL_SIZE_BYTES));
return (int) ((bytes_downloaded * 100L) / bytes_total);
}
public long StartDownload(String downloadUrl, String destination, String title)
{
DownloadManager.Request request = new DownloadManager.Request(Uri.parse(downloadUrl));
request.setTitle(title);
request.allowScanningByMediaScanner();
request.setNotificationVisibility(DownloadManager.Request.VISIBILITY_VISIBLE_NOTIFY_COMPLETED);
request.setDestinationUri(Uri.parse(destination));
manager = (DownloadManager) mContext.getSystemService(Context.DOWNLOAD_SERVICE);
return manager.enqueue(request);
}
public void CancelDownload(long downloadId)
{
manager.remove(downloadId);
}
}
using UnityEngine;
using System.Collections;
public class AndroidDownloader : MonoBehaviour {
AndroidJavaObject downloadHelper;
private const string ACTIVITY_NAME = "com.unity3d.player.UnityPlayer";
private const string CONTEXT = "currentActivity";
private const string DOWNLOAD_HELPER = "com.yourcompany.modulename.DownloadHelper";
void Start()
{
AndroidJavaObject context = new AndroidJavaClass(ACTIVITY_NAME).GetStatic(CONTEXT);
downloadHelper = new AndroidJavaObject(DOWNLOAD_HELPER, context);
}
public long Download(string url, string destination, string title)
{
return downloadHelper.Call("StartDownload", url, "file://" + destination, title);
}
public int GetDownloadProgress(long downloadId)
{
if (downloadHelper != null)
{
return downloadHelper.Call("GetDownloadProgress", downloadId);
}
return 0;
}
public void CancelDownload(long downloadId)
{
downloadHelper.Call("CancelDownload", downloadId);
}
}
02-20-2017 05:06 AM
private Cursor cursor;
public int GetDownloadProgress(long downloadId)
{
DownloadManager.Query q = new DownloadManager.Query();
q.setFilterById(downloadId);
cursor = manager.query(q);
cursor.moveToFirst();
int bytes_downloaded = cursor.getInt(cursor
.getColumnIndex(DownloadManager.COLUMN_BYTES_DOWNLOADED_SO_FAR));
int bytes_total = cursor.getInt(cursor.getColumnIndex(DownloadManager.COLUMN_TOTAL_SIZE_BYTES));
cursor.close();
return (int) ((bytes_downloaded * 100L) / bytes_total);
}
AndroidJavaObject context = new AndroidJavaClass(ACTIVITY_NAME).GetStatic<AndroidJavaObject>(CONTEXT);
downloadHelper = new AndroidJavaObject(DOWNLOAD_HELPER, context);
public long Download(string url, string destination, string title)
{
return downloadHelper.Call<long>("StartDownload", url, "file://" + destination, title);
}
public int GetDownloadProgress(long downloadId)
{
if (downloadHelper != null)
{
return downloadHelper.Call<int>("GetDownloadProgress", downloadId);
}
return 0;
}
public void CancelDownload(long downloadId)
{
downloadHelper.Call("CancelDownload", downloadId);
}