从Android 7.0 开始,直接使用本地真实路径的 Uri被认为是不安全的,会抛出一个FileUriExposedException 异常,而____________则是一种特殊的内容提供器,它可以对文件数据进行保护,从而提高了应用的安全性。
查看答案
下面是启动相机拍照应用并等待返回照片文件保存位置的程序片断,请根据注释在空白划线处填写代码。// 创建File对象,用于存储拍照后的图片File outputImage = (1)____________ (getExternalCacheDir(), "output_image.jpg");try { // 如果文件已存在则删除同名文件 if (outputImage.exists()) { outputImage.delete(); } // 根据File对象创建新文件 outputImage.(2)______________;} catch (IOException e) { e.printStackTrace();}// 如果API SDK版本低于24,则根据File对象获取真实文件路径Uriif (Build.VERSION.SDK_INT < 24) { imageUri = Uri.fromFile(outputImage);} else {// 如果API SDK版本不低于24,使用FileProvider获取文件的内容提供器UriimageUri = (3)____________.getUriForFile(MainActivity.this, "com.example.cameraalbumtest.fileprovider", outputImage);}// 创建启动拍照应用意图Intent intent = (4)__________ ("android.media.action.IMAGE_CAPTURE");// 将照片文件的Uri交给意图的Extra字段intent.(5)___________ (MediaStore.EXTRA_OUTPUT, imageUri);// 用刚创建意图启动拍照应用并要求返回结果startActivityForResult(intent, TAKE_PHOTO);
下面是接收startActivityForResult()返回结果的回调方法onActivityResult(),请根据注释在空白划线处填写代码。@Overrideprotected void onActivityResult(int requestCode, int resultCode, Intent data) {// 根据参数返回的请求码判断是哪次请求,作相应处理switch ((1)___________________________) {case takePhoto:// 根据参数返回结果码判断拍照是否成功if ((2)___________________________) {try {// 调用BitmapFactory类的静态方法decodeStream()// 将文件输入流转换成Bitmap对象Bitmap bitmap = (3)___________________________ ((4)_____________________//取得ContentResolver对象// 以输入流方式打开imageUri指定的照片文件.(5)___________________________;// 将照片的Bitmap对象显示在imageView里(6)___________________________;} catch (Exception e) {e.printStackTrace();}}break;case fromAlbum:// 如果打开相册的返回结果码表示成功,并且接收到的返回意图对象data不为空if ((7)____________________ && (8)____________________) {// 从意图对象的Data属性字段中取得照片的UriUri uri = (9)____________________;// 调用自定义方法从Uri位置取得图片的Bitmap对象Bitmap bitmap = getBitmapFromUri(uri);// 将照片的Bitmap对象显示在imageView里(10)___________________________;}break;default:break;}}
在Android中播放音频文件一般都是使用___________________________类来实现的。
请根据下面程序中注释在空白划线处填写代码。// 创建 MediaPlayer 对象MediaPlayer mediaPlayer = (1) ;try {// 取得外部存储区目录,与文件名“music.mp3”组合成文件路径,据此创建File类对象File file = new File((2)_______________________________ , "music.mp3");// 将MediaPlayer对象的数据源设置为File类对象的路径mediaPlayer.(3)__________________________;// 准备播放mediaPlayer.(4)__________________________;// 开始播放mediaPlayer.(5)__________________________;} catch (Exception e) {e.printStackTrace();}