Articles of uri

关于如何从URI获取Exif数据的最终答案

这里已经讨论了很多问题,主要是不同的结果,并且由于API的变化和不同types的URI, 没有明确的答案 。 我自己没有答案,但让我们谈谈它。 ExifInterface有一个接受filePath构造函数。 这本身很烦人,因为现在不鼓励依赖路径 – 你应该使用Uri和ContentResolver 。 好。 我们的Uri名为uri可以从onActivityResult的意图中检索出来(如果您使用ACTION_GET_CONTENT从图库中选择图片),或者可以是我们之前拥有的Uri (如果您从相机中选择图片并调用intent.putExtra(MediaStore.EXTRA_OUTPUT, uri) )。 API <19 我们的uri可以有两种不同的模式: 来自相机的Uris大多数都有一个file:// schema。 那些很容易治疗,因为他们坚持这条道路。 你可以调用new ExifInterface(uri.getPath()) ,你就完成了。 来自画廊或其他内容提供商的Uris通常有一个content://界面。 我个人不知道那是什么,但让我发疯。 据我所知,第二种情况应该使用Context.getContentResolver()获得的ContentResolver 。 以下适用于我测试的所有应用程序,无论如何: public static ExifInterface getPictureData(Context context, Uri uri) { String[] uriParts = uri.toString().split(“:”); String path = null; if (uriParts[0].equals(“content”)) { // we can use ContentResolver. // let’s query […]

如何使用新的Lollipop API访问所有SD卡?

背景 从Lollipop开始,应用程序可以访问真正的SD卡(在Kitkat上无法访问之后,并且在之前的版本中尚未获得官方支持),正如我在此处所述 。 问题 因为很少见到支持SD卡的Lollipop设备,并且因为模拟器实际上没有能力(或者它?)来模拟SD卡支持,所以我花了很长时间来测试它。 无论如何,似乎不是使用普通的File类来访问SD卡(一旦获得了它的许可),你需要使用Uris来使用它,使用DocumentFile。 这限制了对正常路径的访问,因为我找不到将Uris转换为路径的方法,反之亦然(加上它非常烦人)。 这也意味着我不知道如何检查当前的SD卡是否可访问,因此我不知道何时要求用户允许读取/写入(或向他们)。 我试过的 目前,这就是我获取所有SD卡路径的方法: /** * returns a list of all available sd cards paths, or null if not found. * * @param includePrimaryExternalStorage set to true if you wish to also include the path of the primary external storage */ @TargetApi(Build.VERSION_CODES.HONEYCOMB) public static List getExternalStoragePaths(final Context context,final boolean […]

向拨号器发送暂停

与在Android中发送暂停和DTMF输入类似,我正在尝试将暂停字符“,”发送到拨号器。 这适用于HTC Sense手机甚至Xoom,但不适用于Nexus One或T-Mobile G2等“股票体验”手机(我怀疑是摩托罗拉Droid)。 这些手机似乎有一个拨号器试图漂亮格式化数字(即添加破折号),并在点击逗号字符时停止。 有趣的是,它不会阻塞“p”字符,尽管它会删除“p”并继续添加数字。 这是ActivityManager看到的内容: I/ActivityManager( 92): Starting activity: Intent { act=android.intent.action.DIAL dat=tel:8883333,444 cmp=com.android.contacts/.DialtactsActivity } 我也尝试了编码forms,“tel:8883333%2C444”,这些手机的行为没有区别。 我已经尝试了“p”,如上所述,但这些字符被删除导致拨号器888-333-3444填充不正确,我不确定“p”是否正确。 所以,问题是:有没有办法指定一个适用于大多数或所有Android拨号程序的暂停?

我可以从android中的uri获取图像文件的宽度和高度吗?

我通常可以通过MediaStore.Images.Media获取图像宽度 但我需要从Dropbox中选择的图像中获取图像的宽度和高度 所以目前我有以下方法从Dropbox获取图像大小 private void getDropboxIMGSize(Uri uri){ String size = Long.toString(new File(uri.getPath()).length()); return size; } 但我真正需要的是获取文件的宽度和高度值 有谁知道如何实现这一目标?请帮忙!

使用意向URI启动我的应用程序

我知道这已经在StackOverflow中问了很多次了,但我还没有find一个解决scheme。 我的应用程序发送一个链接的电子邮件,点击时应启动应用程序。 根据@hackbod,最好的方法是使用Intent URI(见这个 )。 这是我的代码,设置意图,并把它放在电子邮件正文: Intent customIntent = new Intent(CUSTOM_ACTION); customIntent.setPackage(MY_PACKAGE); customIntent.addCategory(MY_CAT_BROWSABLE); customIntent.addCategory(MY_CAT_DEFAULT); String customUri = customIntent.toUri(Intent.URI_INTENT_SCHEME); String emailBody = getString(R.string.intent_link, customUri); Intent intent = new Intent(Intent.ACTION_SEND); intent.setType("text/html"); intent.putExtra(Intent.EXTRA_SUBJECT, "Recommending vid"); intent.putExtra(Intent.EXTRA_TEXT , Html.fromHtml(emailBody)); try { startActivity(Intent.createChooser(intent, "Choose email client:")); } catch (android.content.ActivityNotFoundException ex) { Toast.makeText(this, "There are no email clients installed.", Toast.LENGTH_SHORT).show(); } […]

通过Twitter应用程序分享图像的URL – Android

我试图通过Twitter应用程序分享一些文字和图像。 图片来源是url。 以下是我的代码: sharingIntent = new Intent(android.content.Intent.ACTION_SEND); sharingIntent.setType("*/*"); sharingIntent.putExtra(android.content.Intent.EXTRA_TEXT, "I am reading this publication, check it out here: "+bookmark_url+""); sharingIntent.putExtra(android.content.Intent.EXTRA_STREAM, Uri.parse("http://example.com/images/thumbs/file_name.jpg")); 但只有文本通过Twitter应用程序分享。 我也收到一条消息,说“ 图片无法加载 ”。 这个代码有什么问题?

是否有可能使用Uri.Builder,而不是“//”部分?

我正在尝试构build一个mailto: uri来使用GMail应用程序发送邮件。 我想使用android.net.Uri.Builder类来做到这一点,但最终的uri格式是mailto://test@example.com ,这使得GMail应用程序认为接收者是//test@example.com ,而不仅仅是test@example.com 。 我结束了这样做: String uriStr = uriBuilder.toString(); uriStr = uriStr.replaceAll("//", ""); final Uri uri = Uri.parse(uriStr); 但显然,这是一个丑陋的黑客… 没有//部分,没有办法build立uri吗?

Android编程 – 使URI获得audio位置

我是全新的Java和android编程,所以对我来说有点奇怪! 我主要来自C ++ / C#的背景,所以说技术! 无论如何。 我试图创build一个简单的类来处理我devise的自定义音乐播放器的audio。 我已经处理了所有按键事件,所以现在我正在处理function。 我使用MediaPlayer类来处理大部分困难的事情,但是我对如何访问保存在用户移动设备上的audio有些困惑。 我一直在做一个小小的研究,显然Android设备有一个内置的数据库,pipe理所有的audio位置,并访问这个数据,我必须使用Uri ? 如果有人可以张贴一些如何使用Uri代码示例来访问这个,那么我相当肯定,我将能够build立在此之上,然后将数据添加到任何我想要的容器中。 只是为了说清楚 – 用户不知道音乐位置目录,并且我没有创build原始文件夹,我想要访问软件可以播放的用户设备上的所有音乐。 或者,如果失败了,一个很好的教程…我看过谷歌提供的文档,但没有任何示例代码,所以我不知道从哪里开始! 谢谢大家。

ContentResolver notifyChange方法是否也通知Uri的细节?

在应用数据期间,我使用了Uri notifyChange 。 比方说我通知content://com.package.my/items 。 我也有详细的Activity ,显示来自content://com.package.my/items/1数据。 Uri被通知的情况下,是否会通知'一般' Uri结果?

如何将一个文件:// uri转换成content:// uri?

我发现,在我的设备上,默认媒体显示工具不显示相同,如果我有一个uri: file://mnt/sdcard/DCIM/Image.jpg 当我用内置的意图去挑选图像时,我得到这个: content://media/external/images/media/247 这些都显示相同的文件,但我没有任何共享选项,当我使用第一个。 我的问题是,如何findUri给出文件Uri的内容?