2017-07-26 56 views
0

以下代码既不创建目录,也不将照片存储在必须创建的目录中。我不知道错误来自哪里,我正在搜索互联网,但找不到有用的信息。你有没有看到过错?目录不是在Android中创建的

 mImageButton.setOnClickListener(new View.OnClickListener() { 

     @Override 
     public void onClick(View view) { 
      Intent cameraIntent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE); 

      //Creamos la carpeta. 
      File imageFolder = new File(Environment.getExternalStorageDirectory() + "/LibretaPolicial"); 
      if(!imageFolder.exists()){ 
       imageFolder.mkdirs(); 
       Toast.makeText(BorrarActivity.this, "Creado", Toast.LENGTH_SHORT).show(); 
      }else{ 
       Toast.makeText(BorrarActivity.this, "NOOOOO creado", Toast.LENGTH_SHORT).show(); 
      } 



      File image = new File(imageFolder, numeroAleatorio+".jpg"); 
      Uri uriSavedImage = Uri.fromFile(image); 

      //Le decimos al Intent que queremos guardar la imagen. 
      cameraIntent.putExtra(MediaStore.EXTRA_OUTPUT, uriSavedImage); 

      //Lamzamos la aplicación de la camara 
      startActivityForResult(cameraIntent, 1); 
     } 
    }); 


} 
protected void onActivityResult(int requestCode, int resultCode, Intent data) { 
    //Comprovamos que la foto se a realizado 
    if (requestCode == 1 && resultCode == RESULT_OK) { //requestCode: 1 requestCode : 0 
     //Creamos un bitmap con la imagen recientemente 
     //almacenada en la memoria 
     Bitmap bMap = BitmapFactory.decodeFile(
       getExternalStorageDirectory()+ 
         "/LibretaPolicial/"+numeroAleatorio+".jpg"); 
     //Añadimos el bitmap al imageView para 
     //mostrarlo por pantalla 
     mImageView.setImageBitmap(bMap); 
    } 
} 

相信在AndroidManifest权限良好,没有告诉我任何错误,只是不创建目录,或者存放在应该已经创建的目录中的照片。

<application 
     android:allowBackup="true" 
     android:icon="@mipmap/ic_launcher" 
     android:label="@string/app_name" 
     android:roundIcon="@mipmap/ic_launcher" 
     android:supportsRtl="true" 
     android:theme="@style/AppTheme"> 
     <activity android:name=".Activities.SplashActivity"> 
      <intent-filter> 
       <action 
        android:name="android.intent.action.MAIN" 
        android:screenOrientation="portrait"/> 
       <category android:name="android.intent.category.LAUNCHER"/> 
      </intent-filter> 
     </activity> 
     <activity 
      android:name=".Activities.MainActivity" 
      android:screenOrientation="portrait"> 

     </activity> 
     <activity 
      android:name=".Activities.BorrarActivity" 
      android:screenOrientation="portrait"> 
     </activity> 
     <activity 
      android:name=".Activities.ModificarActivity" 
      android:screenOrientation="portrait"> 
     </activity> 
     <activity 
      android:name=".Activities.BorrarPlacasActivity" 
      android:screenOrientation="portrait"> 
     </activity> 
     <activity 
      android:name=".Activities.ModificarPlacaActivity" 
      android:screenOrientation="portrait"> 
     </activity> 
     <activity 
      android:name=".Activities.ClaveActivity" 
      android:screenOrientation="portrait"> 
     </activity> 
    </application> 
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/> 
    <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"> 
    </uses-permission> 

</manifest> 
+0

https://stackoverflow.com/questions/32789157/how-to-write-files-to-external-public-storage -in-android-so-that-they-are-visibl – CommonsWare

+0

你是怎么在onActivityResult中调用getExternalStorageDirectory()的? –

回答

0

尝试使用:

File imageFolder = new File(Environment.getExternalStorageDirectory(), "LibretaPolicial"); 
+0

我已经试过了,它仍然不起作用。 – skirlappa

+0

你有没有得到“NOOOOO creado”吐司? –

+0

如果输入: Toast.makeText(DeleteActivity.this,“Created”,Toast.LENGTH_SHORT).show(); – skirlappa

0

我只是想知道你是如何调用onActivityResultgetExternalStorageDirectory() withou Environment前缀?

反正我没写一个新的代码,可以帮助你

  • 我在创建之前检查的Environment.getExternalStorageState()状态DIR
  • 我用File.separator代替/安全(使用/可能会导致错误)
  • 我之后
创造更快的加载一个临时文件

这是代码

public static final int REQUEST_TAKE_PHOTO = 1; 
private File photoCapturedFile; 
public void openCamera() { 
    Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE); 
    String timeStamp = System.currentTimeMillis() + ""; // You can use any name 
    String fileName = "JPEG_" + timeStamp; 

    if (!Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED)) { 
     photoCapturedFile = new File(Environment.getExternalStoragePublicDirectory(
       Environment.DIRECTORY_PICTURES), 
       fileName + ".jpg"); 
    } else { 
     String dir = Environment.getExternalStorageDirectory() + File.separator + "myDirectory"; 
     //create folder 
     File folder = new File(dir); //folder name 
     if (!folder.exists()) { 
      folder.mkdirs(); 
     } 

     //create file 
     photoCapturedFile = new File(dir, fileName + ".jpg"); 
    } 

    Uri temUri = Uri.fromFile(photoCapturedFile); 

    intent.putExtra(MediaStore.EXTRA_OUTPUT, temUri); 
    intent.putExtra(MediaStore.EXTRA_VIDEO_QUALITY, 0); 
    if (intent.resolveActivity(context.getPackageManager()) != null) { 
     startActivityForResult(intent, REQUEST_TAKE_PHOTO); 
    } 
} 

然后在onActivityResult

public void onActivityResult(int requestCode, Intent data) { 
    switch (requestCode) { 
     case REQUEST_TAKE_PHOTO: 
      if (photoCapturedFile != null) { 
       // handle photoCapturedFile.getAbsolutePath() .... 
      } 
      break; 
    } 
} 
相关问题