web-dev-qa-db-ja.com

Android mkdirがフォルダを作成しない

今夜、私は簡単だと思っていた何かをしている問題を抱えています.../mnt/sdcardにフォルダを作成します。

フォロー許可を設定しました:

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

ぼくの Main.Javaには、フォルダーを作成する次のものが含まれています。

public class Main extends TabActivity {
    static int index = 1;
    private static final String TAG = "Main";       

    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);

        File folder = new File(Environment.getExternalStorageDirectory () + "/tallgrass/images");
        boolean success = false;
        if(!folder.exists()){
            success = folder.mkdir();
        }
        if (!success){ 
            Log.d(TAG,"Folder not created.");
        }
        else{
            Log.d(TAG,"Folder created!");
        }
    }

「フォルダが作成されました!」ログにメッセージが表示されますが、両方を確認すると/mnt/sdcardおよび/sdcardどちらにもフォルダがありません。私は電話してみました:

Environment.MEDIA_MOUNTED.equals(Environment.getExternalStorageState())

そしてそれはtrueを返します。すべての兆候が機能していることを示しているため、これを理解することはできません。また、開発用にエミュレータではなく携帯電話を使用しているため、SDカードがマウントされていたり、何かが発生した場合に備えて、携帯電話をPCから取り外して試してみました。とはいえ、debuggableからtrueはフォルダの作成を妨げているのでしょうか?

ありがとう!

24
Taylor Kems

_/mnt/sdcard/tallgrass/_ディレクトリは存在しますか? (私はそうは思いませんが、あなたは決して知りません。)

File.mkdirs() メソッドは、必要なすべてのディレクトリを作成します。 mkdir()は、パス名にlastディレクトリのみを作成します。

42
sarnold

次のようにして、アクセス許可をどこに置くかを確認します。

 <manifest xmlns:Android="http://schemas.Android.com/apk/res/Android"
 package="edu.una.info.app">
   <uses-permission Android:name="Android.permission.WRITE_EXTERNAL_STORAGE"/>
   <uses-permission Android:name="Android.permission.READ_EXTERNAL_STORAGE" />
   <uses-permission Android:name="Android.permission.CALL_PHONE" />

<application Android:allowBackup="true"
    Android:label="@string/app_name"
    Android:icon="@drawable/ic_launcher"
    Android:theme="@style/AppTheme">

    <activity
        Android:name="edu.una.info.SplashScreenActivity"
0
user3470042