如何创建一个Android侦听器来捕获来自Whatsapp或其他应用程序的所有传入/传出图像/视频?

如何创建一个Android侦听器来捕获来自Whatsapp或其他应用程序的所有传入/传出图像/视频?,android,listener,whatsapp,Android,Listener,Whatsapp,我见过一些照片托管应用程序以某种方式“监听”Whatsapp,每次我在Whatsapp中接收或发送照片时,他们都会将其拍摄并上传到他们的主机上 我如何收听照片目录中的文件夹并获取这些图像 我不明白如何建立一个“倾听”其他文件夹的意图 此外,在我的情况下(使用Whatsapp),文件夹可以位于不同的位置,具体取决于手机以及是否有SD卡。。。如何知道手机中的whatsapp文件夹,然后创建一个意图来获取所有实时图片?根据whatsapp下载的图片显示在图库中 这意味着whatsapp正在强制媒体扫描

我见过一些照片托管应用程序以某种方式“监听”Whatsapp,每次我在Whatsapp中接收或发送照片时,他们都会将其拍摄并上传到他们的主机上

我如何收听照片目录中的文件夹并获取这些图像

我不明白如何建立一个“倾听”其他文件夹的意图

此外,在我的情况下(使用Whatsapp),文件夹可以位于不同的位置,具体取决于手机以及是否有SD卡。。。如何知道手机中的whatsapp文件夹,然后创建一个意图来获取所有实时图片?

根据whatsapp下载的图片显示在图库中

这意味着whatsapp正在强制媒体扫描程序运行,因此它们应该具有广播意图。所以我想为这个目的创建一个

具有文件的路径。它可能有助于区分应用程序和文件类型

以下意图也可能派上用场


你为什么不试试FileObserver呢。这里我为您提供了它的链接

文件观察者是

监视文件,以便在设备上的任何进程访问或更改文件后触发事件。每个FileObserver实例监视单个文件或目录。如果某个目录受到监视,则会为受监视目录中的所有文件和子目录触发事件

我希望这将对您有所帮助。

我建议您使用,并让它在WhatsApp目录上运行:

String sdcardPath=Environment.getExternalStorageDirectory().getAbsolutePath();
FileObserver=createFileObserver(sdcardPath+“/WhatsApp/Media/WhatsApp Images/”;
观察者:startWatching();
...
观察者停止观察();
我在这里创建了一个方法,如果您想使用不同的路径运行多个观察器,可以重用代码。您还可以创建一个扩展
FileObserver
的类

private FileObserver createFileObserver(String path) {
    FileObserver observer = new FileObserver(path) {    
        @Override
        public void onEvent(int event, String file) {
            if(event == FileObserver.CREATE){
                Toast.makeText(getApplicationContext(), file + " was created!", Toast.LENGTH_SHORT).show();
            } //...
        }
    };
    return observer;
}

编辑:WhatsApp在没有sd卡的手机上似乎不起作用。它显示错误
无法下载,因为没有可用的SD卡。请插入SD卡或将其卸载为磁盘驱动器,然后重试

所有whatsapp图像/视频将存储在名为“whatsapp图像/视频”的文件夹中。为视频/图像添加意图过滤器很容易,从这些目录复制文件需要用户对外部驱动器的许可。超级简单。。。怎么做搜索结果让我在这里问。。。谢谢:如果用户没有SD卡怎么办?我应该开始在该功能中匹配观察者,对吗?WhatsApp在没有sd卡的手机上似乎不起作用(见更新的答案)。当然,您可以在函数内部开始观察,但请确保保留对
观察者的引用,否则您无法调用
stopWatching()
。它在Whatsapp和其他应用程序上不起作用@马努