Android - 媒体扫描仪不适用于 api 28-29

Meh*_*goz 7 android android-mediascanner

我正在使用MediaScanner. 但是 API 28 和 29 不起作用。

context.sendBroadcast(new Intent(Intent.ACTION_MEDIA_SCANNER_SCAN_FILE, file));
Run Code Online (Sandbox Code Playgroud)

我用过Broadcast,但效果不一样。因为它被“弃用”了。

java public static class FilesScanner extends ContextWrapper implements MediaScannerConnection.MediaScannerConnectionClient{

        private MediaScannerConnection connection = null;
        private String SCAN_FILE_PATH = "";
        private String SCAN_FILE_MIME_TYPE = "*/*";

        public static FilesScanner with(Context context, String SCAN_FILE_PATH){ return new FilesScanner(context, SCAN_FILE_PATH, "*/*"); }
        public static FilesScanner with(Context context, String SCAN_FILE_PATH, String SCAN_FILE_MIME_TYPE){ return new FilesScanner(context, SCAN_FILE_PATH, SCAN_FILE_MIME_TYPE); }
        private FilesScanner(Context context, String SCAN_FILE_PATH, String SCAN_FILE_MIME_TYPE){
            super(context);
            this.SCAN_FILE_PATH = SCAN_FILE_PATH;
            if (SCAN_FILE_PATH == null){
                this.SCAN_FILE_PATH = FilePaths.ROOT_DIR;
            }
            this.SCAN_FILE_MIME_TYPE = SCAN_FILE_MIME_TYPE;
            if (SCAN_FILE_MIME_TYPE == null){
                this.SCAN_FILE_MIME_TYPE = "*/*";
            }
            connection = new MediaScannerConnection(this, this);
            connection.connect();
        }

        @Override
        public void onMediaScannerConnected() {
            MyLog.d("onMediaScannerConnected");
            connection.scanFile(SCAN_FILE_PATH, SCAN_FILE_MIME_TYPE);
        }

        @Override
        public void onScanCompleted(String path, Uri uri) {
            MyLog.d("onScanCompleted" + " URI : " + uri.getPath());
            connection.disconnect();
        }
    }
FilesScanner.with(this, path, "image/*");
Run Code Online (Sandbox Code Playgroud)

Abh*_*arg 0

从 Android 9(API 级别 28)开始,NETWORK_STATE_CHANGED_ACTION广播不会接收有关用户位置或个人身份数据的信息。

此外,如果您的应用安装在运行Android 9 或更高版本的设备上,则来自 Wi-Fi 的系统广播不包含 SSID、BSSID、连接信息或扫描结果。要获取此信息,请调用getConnectionInfo()getConnectionInfo

有关更多信息,请使用此文档链接:https ://developer.android.com/guide/components/broadcasts