私はAndroidアプリを開発しています。モジュールの1つで、以下のコードを使用してファイルを保存するために外部ストレージにディレクトリを作成しています。問題なく動作し、ディレクトリを作成できます。
public class Main extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
Button btnCreateDir = (Button) findViewById(R.id.createDir);
btnCreateDir.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
try {
File pictureFileDir = getDir();
if (!pictureFileDir.exists() && !pictureFileDir.mkdirs()) {
Toast.makeText(getApplicationContext(),"Can't create directory",Toast.LENGTH_LONG).show();
} else {
Toast.makeText(getApplicationContext(),"directory created/exists",Toast.LENGTH_LONG).show();
}
} catch (Exception e4) {
e4.printStackTrace();
}
}
});
}
private File getDir() {
File sdDir = Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_PICTURES);
return new File(sdDir, "GaPopupFile");
}
}
ただし、このアプリをシステム アプリとして作成すると (システム証明書で署名し、system/app フォルダーに保存することにより)、この同じコードを実行すると、「ディレクトリを作成できません」が返されることがわかります。これはどのように可能ですか、ここで何が欠けていますか?