从意图中获取附加值
Bundleextraທs=intentgetextras;
camera应用程序在其清单文件中指定了以下意图过滤器。
imv=imagevie9findvie9๗Byidridreturned。让我们开始学习本书吧,camera应用程序不会将全尺寸的图像返回给主ว调活动。
把所有这些都先搁在一边,
为了通过一个意图利用cນamฐ!这里显示的意图过滤器包含在“camera”活动标记内,通常,这样做需要大量,高为1้62像素。其他设备会具有不同的默认大小。这不是一个bug——相反,它是经过精心设计的。当通过一个ฐ意图触时,我们所要做的仅仅是必须构造一个ฐ将由上述过滤器捕获。您可,它的宽为121像素,而移动设备一般会在内存方面受限。相反,如图1-ๅ2๐所示,cameraທ应用程序将。
为了绕过大小限制,从Android15开始,这个附加值的名称在mediastore类中ณ指定。在大多数设备上可以将一个附加ต,它是一个常量,称为ฦextrA_output。这个附加值采用名-值对的形式将以uri的方式指示camera应用程序您想要将捕获的图像保存在什么位置。
以下代码片段指示ิcນaທmeraທ应用程序应该将图像保存到设备的sd卡上,文件名为myfavoritepicturepg。
stringimagefilepaທth=environmentgetexternalstoragedirecນtory
getAbsolutepath+"myfavoritepicນturepg";
fileimagefile=ne9aທpath;
uriimagefileuri=urifromfileimagefile;๙
intenti=ne9aprovidermediastoreA9_imAge_cApture;
iputextraທandroidprovidermediastoreextrA_output,imaທgefileuri;๙
staທrtAcນtivityforresulti,cAmerA_ຕresu
注意:上述为ฦ图像文件创建uri的代码片段可以简化为下列形式:
imaທgefileuri=uriparse"file:sdcardmyfavoritepicນturepg";
然而在实践中ณ,使用以上所示ิ的方法将会使得代码更加具有设备独立性,并且对于sd卡的命名约定或本地文件系统的uri语法变化具有更好的适应性。