2017-10-13 139 views
0

我正在尝试构建一个捕获图像的简单应用程序。我已经成功地实施,直到Android的M.我面对Android上的n个FileUriExposedException应用程序,但然后我可以用这个link的帮助下这表明该代码 `Android相机图像名称

capture_image.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View view) { 
       Intent camera_intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE); 
       if(camera_intent.resolveActivity(getPackageManager())!=null){ 
        ContentValues values = new ContentValues(1); 
        values.put(MediaStore.Images.Media.MIME_TYPE,"image/jpg"); 
        fileUri = getContentResolver().insert(MediaStore.Images.Media.EXTERNAL_CONTENT_URI,values); 
        camera_intent.putExtra(MediaStore.EXTRA_OUTPUT,fileUri); 
        camera_intent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION | 
              Intent.FLAG_GRANT_WRITE_URI_PERMISSION); 
        startActivityForResult(camera_intent, CAMERA_CAPTURE_IMAGE_REQUEST_CODE); 
       } 
       else { 
        Toast.makeText(Visitor_Details.this,"ERROR",Toast.LENGTH_LONG).show(); 
       } 
      } 
     }); 

`

这一块解决这个问题代码将带图像名称的随机13位整数图像存储在图像文件夹中,例如: - 1507922385727.jpg。我尝试通过Log.d()读取fileUri,但由Log和Image名称返回的值不相同。这个图像名称是如何生成的?如何存储此图像名称,以便我可以通过意图在下一个活动中显示图像来传递此图像名称?最后,如何在图片中创建一个可以指引这些图片的子文件夹? PS: - 以前,我使用SimpleDateFormat获取TimeStamp作为我的图像名称,并使用File类创建了文件夹。getImageName()只返回时间戳值。这是我以前版本的Android使用的代码。 `

btnCapture.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View view) { 



       Intent camIntent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE); 
       File imageDir = new File(Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_PICTURES),"Camera Test"); 
       String imageName = getImageName(); 
       File imagePath = new File(imageDir,imageName); 
       Uri imageUri = Uri.fromFile(imagePath); 
       camIntent.putExtra(MediaStore.EXTRA_OUTPUT,imageUri); 
       startActivityForResult(camIntent,1); 

      } 

`

回答

1

如何产生这个形象的名字?

那是高达MediaStore。使用您的原始代码,但使用FileProvider来访问文件位置并获取您的Uri。有关如何使用FileProviderACTION_IMAGE_CAPTURE,请参阅this sample app

+0

谢谢。相机工作。除了现在,我得到IllegalArgumentException。 – Gautam