Notice: 函数 WP_Scripts::localize 的调用方法不正确$l10n 参数必须是一个数组。若要将任意数据传递给脚本,请改用 wp_add_inline_script() 函数。 请查阅调试 WordPress来获取更多信息。 (这个消息是在 5.7.0 版本添加的。) in /data/www/appblog/wp-includes/functions.php on line 6131

Android getContentResolver().query 获取文件路径NullPointerException

针对Android 6.0系统测试如下:

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    super.onActivityResult(requestCode, resultCode, data);

    Uri fileUri = data.getData();
    String[] filePathColumn = { MediaStore.Images.Media.DATA };

    Cursor cursor = getContentResolver().query(fileUri, filePathColumn, null, null, null);
    cursor.moveToFirst();
    String filePath = cursor.getString(cursor.getColumnIndex(filePathColumn[0]));
    cursor.close();
}

cursor的结果为null,查找原因,得到如下结论:

对于Android 6.0及后续版本,Uri的形式发生变化,此时如果要获取图像的路径,可以按照如下实现:

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    super.onActivityResult(requestCode, resultCode, data);

    Uri fileUri = data.getData();
    String[] filePathColumn = { MediaStore.Images.Media.DATA };

    String filePath = null;
    if(Build.VERSION.SDK_INT < Build.VERSION_CODES.M) {
        Cursor cursor = getContentResolver().query(fileUri, filePathColumn, null, null, null);
        cursor.moveToFirst();
        filePath = cursor.getString(cursor.getColumnIndex(filePathColumn[0]));
        cursor.close();
    } else {
        filePath = fileUri.getPath();
    }
}
上一篇 Android自定义广播设置只能由指定的APP接收
下一篇 Android判断应用通知权限是否开启以及跳转到设置界面