2017-02-15 9 views
0

私はこのコードをGenomeotion MarshmallowとNougatでHTC 10でテストしましたが、両方で動作しました。
私はAndroid 7.0をGenymotionで試しましたが、ディレクトリを作成しませんでした。特定のAndroidバージョンでディレクトリを作成

理由は何ですか?

File file = new File(Environment 
    .getExternalStorageDirectory() + File.separator + 
    "SchoolAssist" + File.separator + lesson_name); 

boolean isDir = file.exists(); 
if (!isDir) 
    isDir = file.mkdirs(); 

if (isDir) { 
    Intent notes = new Intent(getActivity(), NotesManager.class); 
    notes.putExtra("dir", file.getAbsolutePath()); 
    startActivity(notes); 
} 
else 
    Toast.makeText(getContext(), "Error creating directory", Toast.LENGTH_SHORT).show(); 

編集:私のマニフェストは、これらの行が含まれています:あなたのコードで

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

それはあなただけの最後のデバイスに許可を与えるのを忘れている可能性があるの? –

+0

私はデバイスのいずれかで壮大な許可を受ける必要はありませんでした –

+0

あなたは 'API> = 23'でコード内のパーミッションをチェックする必要があります - https://developer.android.com/training/permissions/requesting.html –

答えて

0

トーストは、ディレクトリを働い作成する場合にも表示されます。アクティビティは、コードを呼び出す前にファイルがすでに存在している場合にのみ開始されます。

File file = new File(Environment 
      .getExternalStorageDirectory() + File.separator + 
      "SchoolAssist" + File.separator + lesson_name); 

if(!file.exists()) { 
    if(file.mkdirs()) { 
     startNotesManager(); 
    } else { 
     Toast.makeText(getContext(), "Error creating directory", Toast.LENGTH_SHORT).show(); 
    } 
} else { 
    startNotesManager(); 
} 

を、活動開始のために、このヘルパーメソッドを実装します:

これを試してみてください

private void startNotesManager() { 
    Intent notes = new Intent(getActivity(), NotesManager.class); 
    notes.putExtra("dir", file.getAbsolutePath()); 
    startActivity(notes); 
} 
関連する問題