添加项目文件。
This commit is contained in:
71
XXCpzs.Android/DownloadReceiver.cs
Normal file
71
XXCpzs.Android/DownloadReceiver.cs
Normal file
@@ -0,0 +1,71 @@
|
||||
using Android.App;
|
||||
using Android.Content;
|
||||
using System;
|
||||
|
||||
namespace XXCpzs.Droid
|
||||
{
|
||||
[BroadcastReceiver]
|
||||
|
||||
/// <summary>
|
||||
/// 下载通知接收器
|
||||
/// </summary>
|
||||
public class DownloadReceiver : BroadcastReceiver
|
||||
{
|
||||
public long downloadId = 0;
|
||||
public DownloadReceiver()
|
||||
{
|
||||
|
||||
}
|
||||
public DownloadReceiver(long downloadId)
|
||||
{
|
||||
this.downloadId = downloadId;
|
||||
}
|
||||
public override void OnReceive(Context context, Intent intent)
|
||||
{
|
||||
if (intent.Action == DownloadManager.ActionDownloadComplete)
|
||||
{
|
||||
#region 下载完成
|
||||
DownloadManager manager = (DownloadManager)context.GetSystemService(Context.DownloadService);
|
||||
//获取下载id,默认值-1
|
||||
var downId = intent.GetLongExtra(DownloadManager.ExtraDownloadId, -1);
|
||||
if (downId == downloadId)
|
||||
{
|
||||
Android.Database.ICursor cursor = null;
|
||||
try
|
||||
{
|
||||
DownloadManager.Query query = new DownloadManager.Query();
|
||||
query.SetFilterById(downId);
|
||||
cursor = manager.InvokeQuery(query);
|
||||
if (cursor.MoveToFirst())
|
||||
{
|
||||
//获取文件下载路径
|
||||
var downloadedTo = cursor.GetString(cursor.GetColumnIndex(DownloadManager.ColumnLocalUri));
|
||||
//var apkUri = manager.GetUriForDownloadedFile(downId);//错误路径
|
||||
|
||||
var installIntent = new Intent(Intent.ActionView);
|
||||
installIntent.SetDataAndType(Android.Net.Uri.Parse(downloadedTo), "application/vnd.android.package-archive");
|
||||
//给目标程序读改uri的权限。
|
||||
installIntent.AddFlags(ActivityFlags.NewTask);
|
||||
if (Android.OS.Build.VERSION.SdkInt > Android.OS.BuildVersionCodes.M)
|
||||
installIntent.AddFlags(ActivityFlags.GrantReadUriPermission);
|
||||
// installIntent.SetFlags(ActivityFlags.GrantReadUriPermission | ActivityFlags.NewTask);
|
||||
context.StartActivity(installIntent);
|
||||
|
||||
}
|
||||
if (cursor != null)
|
||||
cursor.Close();
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
}
|
||||
|
||||
context.UnregisterReceiver(this);
|
||||
}
|
||||
#endregion
|
||||
}
|
||||
else if (intent.Action == DownloadManager.ActionNotificationClicked)
|
||||
{
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user