Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/xamarin/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Xamarin android-尝试对空对象引用调用虚拟方法sendBroadcast()_Xamarin_Xamarin.android - Fatal编程技术网

Xamarin android-尝试对空对象引用调用虚拟方法sendBroadcast()

Xamarin android-尝试对空对象引用调用虚拟方法sendBroadcast(),xamarin,xamarin.android,Xamarin,Xamarin.android,我正在使用Xamarin构建一个跨平台应用程序,我的应用程序将从互联网下载视频,我已经完成了下载和保存功能,但在将视频保存到DCIM(android)后,视频不会出现在多媒体资料中。在互联网上搜索解决方案一天之后,我想出了两个解决方案: 1.下载完成后:发送带有“Intent.ActionMediaMounted”操作的广播 2.下载完成后,调用“MediaScannerConnection.ScanFile” 对于解决方案1,我得到: “{Java.Lang.NullPointerExcept

我正在使用Xamarin构建一个跨平台应用程序,我的应用程序将从互联网下载视频,我已经完成了下载和保存功能,但在将视频保存到DCIM(android)后,视频不会出现在多媒体资料中。在互联网上搜索解决方案一天之后,我想出了两个解决方案:

1.下载完成后:发送带有“Intent.ActionMediaMounted”操作的广播

2.下载完成后,调用“MediaScannerConnection.ScanFile”

对于解决方案1,我得到:

“{Java.Lang.NullPointerException:尝试在空对象引用上调用虚拟方法'void android.content.Context.sendBroadcast(android.content.Intent)'”

对于解决方案2,我得到:

“{Java.Lang.NullPointerException:尝试在空对象引用上调用虚拟方法'boolean android.content.Context.bindService(android.content.Intent,android.content.ServiceConnection,int)}”

这是我的界面,我用来处理PLC项目中的下载:

namespace VideoDownloader
    {
      public interface IDownloadState
      {
          void OnDownloadStarted();
          void OnDownloadError();
          void OnDownloadFinished(string path);
       }
    }
namespace VideoDownloader
{
    public partial class MainPage : TabbedPage
    {

        public MainPage()
        {
            InitializeComponent();
        }

        public void downloadVideo(VideoInfor video, bool isRetried)
        {
          //download code here...                                    
          DependencyService.Get<IDownloadState()
          .OnDownloadFinished(video.path);
         }
    }

}
这是我在PLC项目中的MainPage.xaml.cs:

namespace VideoDownloader
    {
      public interface IDownloadState
      {
          void OnDownloadStarted();
          void OnDownloadError();
          void OnDownloadFinished(string path);
       }
    }
namespace VideoDownloader
{
    public partial class MainPage : TabbedPage
    {

        public MainPage()
        {
            InitializeComponent();
        }

        public void downloadVideo(VideoInfor video, bool isRetried)
        {
          //download code here...                                    
          DependencyService.Get<IDownloadState()
          .OnDownloadFinished(video.path);
         }
    }

}
我知道android在stackoverflow上有很多类似的问题,但他们似乎一点也不喜欢我的情况。有人知道我做错了什么吗?为什么会这样

对于解决方案2,我得到:

“{Java.Lang.NullPointerException:尝试在空对象引用上调用虚拟方法'boolean android.content.Context.bindService(android.content.Intent,android.content.ServiceConnection,int)}”

请尝试在
OnDownloadFinished()
中使用
Forms.Context
而不是
this
。 例如:

    public void OnDownloadFinished(string path)
    {
        //Intent intent = new Intent(Intent.ActionMediaMounted);
        //SendBroadcast(intent);
        //throw new NotImplementedException();
        MediaScannerConnection.ScanFile(Forms.Context, new String[] {
        Android.OS.Environment        
.GetExternalStoragePublicDirectory(Android.OS.Environment.DirectoryDcim)
.AbsolutePath }, null, null);
    }

@user2905416您是否尝试过清理和重建?或者尝试在真实的手机上运行它。我现在可以调试我的项目,这是因为在我的visual studio中禁用了调试,并且我尝试了您的解决方案“用Forms.Context替换此”“错误消失了,但当我打开gallery时,下载到DCIM文件夹的视频不在那里,您对android上的gallery能够显示下载的视频文件有什么建议吗?@user2905416您确定您的视频已下载吗?”?你能提供一个演示项目吗?@Billy Liu-MSFT:我肯定视频已经下载了,因为我正在使用“Es file explorer file manager”管理我的android模拟器上的文件和文件夹。如何向你提供我的演示项目?APK文件?@user2905416您可以将项目上传到Github并给我链接