2016-05-18 10 views
0

how to put a picture in the internal memory of the app? これは私の質問でした。これはアプリに画像を入れることです。より具体的にしたいです。あなたは2つのオプションがありギャラリーにアクセスできない場所に画像を保存する

public class Add_Comment_Picture extends AppCompatActivity { 
    static final int CAM_REQUEST = 1; 
    ImageView imageView; 
    ImageButton button; 
    private static final int REQUEST_CODE = 1; 
    String mCurrentPhotoPath; 
    static final int REQUEST_TAKE_PHOTO = 1; 


    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_add__comment__picture); 
    // ActivityCompat.requestPermissions(this, new String[]{Manifest.permission.WRITE_EXTERNAL_STORAGE}, REQUEST_CODE); 
     button = (ImageButton) findViewById(R.id.imageButtonCamera); 
     imageView = (ImageView) findViewById(R.id.imageView); 

     button.setOnClickListener(new View.OnClickListener() { 
      public void onClick(View v) { 
       Intent camera_intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE); 
       File file = getFile(); 
       camera_intent.putExtra(MediaStore.EXTRA_OUTPUT, Uri.fromFile(file)); 
       startActivityForResult(camera_intent, CAM_REQUEST); 
      } 
     }); 


    } 

    private String createFileName(){ 
     String timeStamp = new SimpleDateFormat("yyyyMMdd_HHmmss").format(new Date()); 
     return "JPEG_" + timeStamp + "_.jpg"; 
    } 



    @Override 
    protected void onStart() { 
     super.onStart(); 

     if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) { 

      int hasWritePermission = checkSelfPermission(Manifest.permission.WRITE_EXTERNAL_STORAGE); 
      int hasReadPermission = checkSelfPermission(Manifest.permission.READ_EXTERNAL_STORAGE); 
      int hasCameraPermission = checkSelfPermission(Manifest.permission.CAMERA); 

      List<String> permissions = new ArrayList<String>(); 
      if (hasWritePermission != PackageManager.PERMISSION_GRANTED) { 
       permissions.add(Manifest.permission.WRITE_EXTERNAL_STORAGE); 
      } 

      if (hasReadPermission != PackageManager.PERMISSION_GRANTED) { 
       permissions.add(Manifest.permission.READ_EXTERNAL_STORAGE); 
      } 

      if (hasCameraPermission != PackageManager.PERMISSION_GRANTED) { 
       permissions.add(Manifest.permission.CAMERA); 
      } 
      if (!permissions.isEmpty()) { 
       requestPermissions(permissions.toArray(new String[permissions.size()]), 111); 
      } 
     } 


    } 


    private File getFile() 
    { 
     //File folder = new File("sdcard/camera_app"); 
     File folder = new File("sdcard/data/data/com.yuvaleliav1gmail.foodchain/photos"); 
     if (!folder.exists()) 
     { 
      folder.mkdir(); 
     } 
     mCurrentPhotoPath = createFileName(); 
     File image_file = new File(folder,mCurrentPhotoPath); 
     mCurrentPhotoPath = "sdcard/data/data/com.yuvaleliav1gmail.foodchain/photos/" + mCurrentPhotoPath; 
     return image_file; 
    } 

    @Override 
    protected void onActivityResult(int requestCode, int resultCode, Intent data) { 
     // String path = mCurrentPhotoPath; 
     imageView.setImageDrawable(Drawable.createFromPath(mCurrentPhotoPath)); 
     super.onActivityResult(requestCode, resultCode, data); 
    } 

    @Override 
    public void onRequestPermissionsResult(int requestCode, String[] permissions, int[] grantResults) { 
     switch (requestCode) { 
      case 111: { 
       for (int i = 0; i < permissions.length; i++) { 
        if (grantResults[i] == PackageManager.PERMISSION_GRANTED) { 
         System.out.println("Permissions --> " + "Permission Granted: " + permissions[i]); 


        } else if (grantResults[i] == PackageManager.PERMISSION_DENIED) { 
         System.out.println("Permissions --> " + "Permission Denied: " + permissions[i]); 

        } 
       } 
      } 
      break; 
      default: { 
       super.onRequestPermissionsResult(requestCode, permissions, grantResults); 
      } 
     } 
    } 
} 
+0

@vrund purohit:ファイル拡張子のスペルが間違っています。「.nomedia」として修正してください –

+1

ファイルをアプリケーションの内部メモリに保存してください。 Galeryアプリはあなたのアプリの内部メモリにアクセスできません。 – greenapps

+0

greenapps、これはまさに私がやりたかったことです...どうすればいいのですか? –

答えて

0

私は必要なもの は、それがデバイスここ

上に保存された後にギャラリーのコード私は絵を見てみましょうすることができないだろうということでした

  1. 置き例えば冒頭にドットのフォルダ内のファイル、.myimages

  2. は、空のファイルcを作成しますAppNameは/ .Images:絵

0

でフォルダ内.nomediaをalledは、単に例えば、ドットで始まる名前のフォルダを作成します。今度はそのフォルダにイメージを保存してください。ギャラリーはAppName/.Imagesフォルダ内のイメージにアクセスできません。

関連する問題