2017-08-16 17 views
-3

私は一定の間隔でスクリーンショットを行うモバイルアプリを作成しています。次に、イメージが検索され、MMSによって送信されます。イメージを内部メモリに保存する方法

私の問題は、Android 7.0の銀河S6エッジで動作するため、メモリカードがないことです。このプログラムは、メモリカード付きのkitkat携帯電話で動作しますが、S6 Galaxyでは動作しません。

画像はどのように内部メモリに保存できますか? MMSアプリケーションにアクセスするパスは何ですか?

は権限

<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/> 
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> 

下に与えるマニフェストファイルでは、あなた

+0

あなたは今のアンドロイド7.0 ** –

+0

と**銀河S6エッジのために**ランタイム許可**を追加しましたボタンをクリックすると、スクリーンショットが動作することを確認します。 – maivenn

答えて

0

ありがとうあなたのjavaファイル内のランタイム許可を与えます。内蔵メモリー/ SDカード

に画像を保存するための

if (ActivityCompat.checkSelfPermission(this, Manifest.permission.WRITE_EXTERNAL_STORAGE) != PackageManager.PERMISSION_GRANTED) { 
    ActivityCompat.requestPermissions(this, new String[]{Manifest.permission.WRITE_EXTERNAL_STORAGE}, EXTERNAL_PERMISSION_CODE); 
} 
if (ActivityCompat.checkSelfPermission(this, Manifest.permission.READ_EXTERNAL_STORAGE) != PackageManager.PERMISSION_GRANTED) { 
    ActivityCompat.requestPermissions(this, new String[]{Manifest.permission.READ_EXTERNAL_STORAGE}, READ_PERMISSION_CODE); 
} 

方法を

(デバイスの外部メモリに書き込もうとすると、最初にt彼はアンドロイドは、デバイスにインストールされているSDカードを見つけようとし、それに書き込みます。 、SDカードが利用できない場合、データは、デバイスの内部メモリに書き込まれます:私は入れ

private void saveImageToLog(){ 
    String timeStampString = Calendar.getInstance().get(Calendar.MILLISECOND); 
    File appDirectory = new File(Environment.getExternalStorageDirectory() + "/MyAppImageLog"); 
    File photo = new File(appDirectory, "photo_" + timeStampString+ ".png"); 

    if (!appDirectory.exists()) { 
     appDirectory.mkdir(); 
    } 

    if (photo.exists()) { 
     photo.delete(); 
    } 

    try { 
     Bitmap bmp = bitmapImage; 
     FileOutputStream fos = new FileOutputStream(photo.getPath()); 
     bitmapImage.compress(Bitmap.CompressFormat.PNG, 0, fos); 
     fos.flush(); 
     fos.close(); 
    }catch (Exception e){ 
     e.printStackTrace(); 
     Log.v("log_tag", e.toString()); 
     testInvalid = ""; 
    } 
} 
関連する問題