来自ACTION_SEND意图的不同URI

时间:2014-07-01 12:35:56

标签: android android-intent share

我已经在我的应用程序中包含了从电话库中插入带“分享”按钮的内容的可能性,但在不同的设备中我有不同的结果。例如,如果我使用代码

从Intent中检索内容的uri
  val fileUri: Uri =  intent.getParcelableExtra(Intent.EXTRA_STREAM).asInstanceOf[Uri]

在Galaxy S3我有:content://media/external/images/media/812 在nexus 7中我有:file:///storage/sdcard0/DCIM/Camera/ContactPhoto-IMG_20131119_173230.jpg

如果我使用该功能:

val projection: Array[String] = Array(MediaColumns.DATA)
val cursor :Cursor= act.getContentResolver.query(uri,projection,null,null,null)
val column_index = cursor.getColumnIndexOrThrow(MediaColumns.DATA)
cursor.moveToFirst()
cursor.getString(column_index)

在这两种不同类型的Uri中,第二种给我错误,因为光标是null

问题是有时action_send带有一个文件:\ URI,有时带有一个内容:\ URI。我需要找到文件:\并将其转换为内容。

1 个答案:

答案 0 :(得分:0)

  

如何在所有设备中使用相同的Uri结构?

欢迎其他应用发送他们想要的任何Uri值。如果您的<intent-filter>表示您支持这些计划,那么您将获得Uri个值,并且必须处理它们。

请注意,您无论如何都不应该使用您的代码段。不要求提供给您的任何Uri都在MediaStore