Probleme bei der Verzeichniserstellung in Android Marshmallow und darüber hinaus
Android Marshmallow hat wesentliche Änderungen an der Art und Weise eingeführt, wie Anwendungen mit dem Dateisystem interagieren, was zu Problemen mit Verzeichniserstellung für einige native Anwendungen. Beim Versuch, ein Verzeichnis in Marshmallow zu erstellen, stellen einige Benutzer ein inkonsistentes Verhalten fest, wobei der Vorgang manchmal funktioniert und bei anderen fehlschlägt.
Verstehen des Problems
Die Hauptursache dafür Das Problem liegt im neuen Storage Access Framework (SAF) von Android. Vor Marshmallow hatten Anwendungen uneingeschränkten Zugriff auf den internen und externen Speicher und konnten so Verzeichnisse frei erstellen.
SAF führt jedoch Berechtigungen ein, die den Schreibzugriff auf den externen Speicher standardmäßig einschränken. Daher müssen Anwendungen explizit Schreibberechtigungen anfordern, bevor sie versuchen, Verzeichnisse auf dem externen Speicher zu erstellen.
Lösung: Schreibberechtigung anfordern
Um das Problem bei der Verzeichniserstellung zu beheben, Anwendungen müssen die Berechtigung WRITE_EXTERNAL_STORAGE vom Benutzer anfordern, bevor sie versuchen, Verzeichnisse zu erstellen. Diese Berechtigung stellt sicher, dass die Anwendung über die erforderliche Berechtigung zum Ändern des externen Speichers verfügt.
Hier ist ein Beispielcode, der zeigt, wie die Speicherschreibberechtigung angefordert und überprüft wird:
<code class="java">import android.Manifest; import android.content.pm.PackageManager; import androidx.appcompat.app.AppCompatActivity; import androidx.core.app.ActivityCompat; import androidx.core.content.ContextCompat; public class MyDevIDS extends AppCompatActivity { private static final int REQUEST_RUNTIME_PERMISSION = 123; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); if (CheckPermission(MyDevIDS.this, Manifest.permission.WRITE_EXTERNAL_STORAGE)) { // you have permission go ahead createApplicationFolder(); } else { // you do not have permission go request runtime permissions RequestPermission(MyDevIDS.this, Manifest.permission.WRITE_EXTERNAL_STORAGE, REQUEST_RUNTIME_PERMISSION); } } @Override public void onRequestPermissionsResult(int permsRequestCode, String[] permissions, int[] grantResults) { switch (permsRequestCode) { case REQUEST_RUNTIME_PERMISSION: { if (grantResults.length > 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED) { // you have permission go ahead createApplicationFolder(); } else { // you do not have permission show toast. } return; } } } public void RequestPermission(Activity thisActivity, String Permission, int Code) { if (ContextCompat.checkSelfPermission(thisActivity, Permission) != PackageManager.PERMISSION_GRANTED) { if (ActivityCompat.shouldShowRequestPermissionRationale(thisActivity, Permission)) { } else { ActivityCompat.requestPermissions(thisActivity, new String[]{Permission}, Code); } } } public boolean CheckPermission(Context context, String Permission) { if (ContextCompat.checkSelfPermission(context, Permission) == PackageManager.PERMISSION_GRANTED) { return true; } else { return false; } } }</code>
Sobald die Wenn die Berechtigung erteilt wird, können Anwendungen mit der mkdirs()-Methode Verzeichnisse erstellen, ohne dass Probleme auftreten. Durch die Implementierung dieser Lösung können Entwickler sicherstellen, dass ihre Anwendungen zuverlässig Verzeichnisse in Android Marshmallow und späteren Versionen erstellen können.
Das obige ist der detaillierte Inhalt vonSo lösen Sie Probleme bei der Verzeichniserstellung in Android Marshmallow und darüber hinaus. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!