android cursor.getString(urlindex)获取本地图片路径为空

获取本地图片原来是这样写的:

Intent intent3 = new Intent(Intent.ACTION_GET_CONTENT);
intent3.setType("image/*");
startActivityForResult(intent3, REQUESTCODE);

但是报错:cursor.getString(urlindex)为空,但在模拟器上运行正常。很纳闷

//获得路径
        if (requestCode == REQUESTCODE) {
            Uri uri = data.getData();
            uri = geturi(data);//解决方案
            String[] pro = {MediaStore.Images.Media.DATA};
            
            Cursor cursor = getActivity().managedQuery(uri, pro, null, null, null);
            Cursor cursor1 = getActivity().getContentResolver().query(uri, pro, null, null, null);
            //拿到索引
            int index = cursor1.getColumnIndexOrThrow(MediaStore.Images.Media.DATA);
            //移动到光标开头
            cursor.moveToFirst();
            //根据索引值获取图片路径
            pathImg = cursor.getString(index);
            L.d("Tag--->path"+pathImg);
            UploadImg(pathImg);
        }

于是百度了一下,网上又说是版本的问题,4.4后的版本获取的路径与4.4之前的不同,但是我模拟器是6.0,弄不懂。。。。

最终的解决方法其实很简单,就是Intent.ACTION_GET_CONTENT换成Intent.ACTION_PICK

Intent intent3 = new Intent(Intent.ACTION_PICK);
intent3.setType("image/*");
startActivityForResult(intent3, REQUESTCODE);

 

  • 3
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
### 回答1: cursor.getString()是Android中的一个方法,用于从数据库中获取字符串类型的数据。它需要一个参数,即要获取的数据所在列的索引或列名。如果获取成功,该方法将返回一个字符串类型的值。如果获取失败,该方法将返回null。 ### 回答2: cursor.getstringAndroid中的一个SQLite数据库操作方法,其主要功能是从查询结果集中提取指定列的字符串值,返回一个String类型的对象。其语法如下: public String getString(int columnIndex) 其中,columnIndex代表所需获取值的列的列索引,索引从0开始。 在使用cursor.getstring方法前,需要先执行查询语句。通常的查询流程是:定义SQLiteOpenHelper类,调用getReadableDatabase()方法获取可读写数据库实例,执行查询语句获取Cursor对象,遍历Cursor对象并通过cursor.getstring方法获取数据。 例如下面是一个使用cursor.getstring方法获取查询结果的示例代码: ```java SQLiteOpenHelper dbHelper = new SQLiteOpenHelper(context, "test.db", null, 1); SQLiteDatabase db = dbHelper.getReadableDatabase(); Cursor cursor = db.query("table_name", new String[]{"column_name"}, null, null, null, null, null); while (cursor.moveToNext()) { String value = cursor.getString(0); Log.d("TAG", "value : " + value); } cursor.close(); db.close(); ``` 上述代码中,通过SQLiteOpenHelper类定义了一个可读写数据库实例,然后执行了查询语句获取了一个Cursor对象。在while循环中,遍历了查询结果集中的每一行数据,并通过cursor.getstring方法获取了所需的列值。注意,在执行完查询后,需要调用Cursor的close()方法和SQLiteDatabase的close()方法关闭相关资源。 总之,cursor.getstring方法是Android中用于提取查询结果集中特定列的字符串值,是Android数据库编程中非常常用的方法之一。 ### 回答3: cursor.getString是使用Android SQLite数据库的开发者经常使用的一个方法之一。它被用来从数据库中获取字符串类型的数据。该方法是继承自抽象类 Cursor ,该类为我们提供了访问数据库表数据的接口。 cursor.getString方法有一个参数-列索引(或列名)。该参数指定了我们需要获取的数据所在的表列。如果我们传递的是列索引,则该索引从0开始计数,即第一列的索引为0。 cursor.getString方法返回一个字符串,该字符串是该表列中存储的数据。如果表列中在数据库中存储的是其他数据类型,如整型,那么cursor.getString方法将会抛出异常。 下面是一个使用cursor.getString方法的示例代码: ``` Cursor cursor = db.rawQuery("SELECT name FROM users", null); while (cursor.moveToNext()) { String name = cursor.getString(0); // 获取第一列名为"name"的数据 Log.d("TAG", "Name: " + name); } cursor.close(); ``` 在上面的代码中,我们首先执行SQL查询来检索“users”表中的“name”列。然后,我们使用 cursor.moveToNext() 方法移动到下一行中的数据。在while循环中,我们使用 cursor.getString() 方法从行中获取名为“name”这一列的数据。最后,我们将获取的数据输出到Logcat控制台中。 值得注意的是,当我们使用 cursor.getString() 或其他方法从Cursor获取数据时,我们必须在使用完Cursor之后调用其 close() 方法来关闭Cursor以释放资源。这是因为Cursor是从数据库中获取数据的,如果我们没有及时关闭Cursor,那么该数据库连接会一直保持打开状态,这将导致内存泄漏和性能问题。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值