Xamarin CreateChooser在Android v5.1中不工作
我正在使用intent共享pdf文件。我在共享文件时限制应用程序。我想把这个文件分享给GoodDocument,Kindle和Dropbox。我正在使用下面的代码来实现这一点。但是下面的代码在android v5.1中不起作用。设备具有要共享的必需应用程序。但在共享时显示“没有应用程序可以执行此操作”。有人能提出解决这个问题的建议吗Xamarin CreateChooser在Android v5.1中不工作,xamarin,android-intent,xamarin.android,file-sharing,Xamarin,Android Intent,Xamarin.android,File Sharing,我正在使用intent共享pdf文件。我在共享文件时限制应用程序。我想把这个文件分享给GoodDocument,Kindle和Dropbox。我正在使用下面的代码来实现这一点。但是下面的代码在android v5.1中不起作用。设备具有要共享的必需应用程序。但在共享时显示“没有应用程序可以执行此操作”。有人能提出解决这个问题的建议吗 var pathFile = Environment.GetFolderPath(Environment.SpecialFolder.Personal);
var pathFile = Environment.GetFolderPath(Environment.SpecialFolder.Personal);
var m_documentMobiNames = shortName + "." + fileType;
var mobileFileName = Path.Combine(pathFile, m_documentMobiNames);
var shareIntentsLists = new List<Intent>();
Intent sendIntent = new Intent();
sendIntent.SetAction(Intent.ActionSend);
sendIntent.SetType("application/pdf");
var resInfos = context.PackageManager.QueryIntentActivities(sendIntent, 0);
if (resInfos.Count > 0)
{
foreach (var resInfo in resInfos)
{
string packageName = resInfo.ActivityInfo.PackageName;
if (packageName.Contains("com.google.android.apps.docs") || packageName.Contains("com.dropbox.android") || packageName.Contains("com.amazon.kindle"))
{
Intent intent = new Intent();
intent.SetComponent(new ComponentName(packageName, resInfo.ActivityInfo.Name));
intent.SetAction(Intent.ActionSend);
intent.SetType("application/pdf");
intent.PutExtra(Intent.ExtraStream, Android.Net.Uri.Parse("file://" + mobileFileName));
intent.SetPackage(packageName);
shareIntentsLists.Add(intent);
}
}
}
if (shareIntentsLists.Count > 0)
{
chooserIntent = Intent.CreateChooser(new Intent(), "Share with");
chooserIntent.PutExtra(Intent.ExtraStream, Android.Net.Uri.Parse(mobileFileName));
chooserIntent.PutExtra(Intent.ExtraInitialIntents, shareIntentsLists.ToArray());
chooserIntent.SetFlags(ActivityFlags.ClearTop);
chooserIntent.SetFlags(ActivityFlags.NewTask);
context.StartActivity(chooserIntent);
await Task.FromResult(true);
}
var pathFile=Environment.GetFolderPath(Environment.SpecialFolder.Personal);
var m_documentMobiNames=shortName+“+”文件类型;
var mobileFileName=Path.Combine(路径文件,m_documentMobiNames);
var sharedintentslists=新列表();
Intent sendIntent=新Intent();
sendIntent.SetAction(Intent.ActionSend);
sendIntent.SetType(“应用程序/pdf”);
var resinfo=context.PackageManager.querytentActivities(sendIntent,0);
如果(resinfo.Count>0)
{
foreach(resInfo中的var resInfo)
{
字符串packageName=resInfo.ActivityInfo.packageName;
if(packageName.Contains(“com.google.android.apps.docs”)| | packageName.Contains(“com.dropbox.android”)| | packageName.Contains(“com.amazon.kindle”))
{
意图=新意图();
SetComponent(新组件名(packageName、resInfo.ActivityInfo.Name));
intent.SetAction(intent.ActionSend);
intent.SetType(“application/pdf”);
intent.PutExtra(intent.ExtraStream,Android.Net.Uri.Parse(“文件:/”+mobileFileName));
intent.SetPackage(packageName);
添加(意图);
}
}
}
如果(shareIntentsLists.Count>0)
{
chooserentent=Intent.CreateChooser(新Intent(),“与共享”);
选择content.PutExtra(Intent.ExtraStream,Android.Net.Uri.Parse(mobileFileName));
选择content.PutExtra(Intent.ExtraInitialIntents,shareIntentsLists.ToArray());
选择Content.SetFlags(ActivityFlags.ClearTop);
选择Content.SetFlags(ActivityFlags.NewTask);
上下文。开始触觉(选择内容);
等待任务。FromResult(true);
}
你是说它适用于所有其他API,但不适用于API-22吗?是的。它在其他API版本中工作。但不是在API-22中,你是说它适用于所有其他API,而不是API-22吗?是的。它在其他API版本中工作。但不是在API-22中