Ich versuche, den internen Speicherpfad eines Android-Geräts zu erhalten.Environment.getExternalStorageDirectory() return null
Da die meisten Geräte spät interne Speicherpfad mit Environment.getExternalStorageDirectory().getPath();
zurückgeben, so verwende ich dies um den Pfad zu bekommen.
Jedes Ding funktioniert gut, außer dass, wenn ich Environment.getExternalStorageDirectory().getPath();
von einer Nicht-Aktivitätsklasse anrufe, es null zurückgibt, während, wenn ich es von einer Aktivitätsklasse rufe, es den korrekten Pfad zurückgibt.
Ich habe versucht, andere Beiträge zu suchen, konnte aber nichts nützliches finden.
Jede Hilfe wäre wirklich dankbar.
EDIT:
if(getExtSdCardPath(con)!=null)
{ path=getExtSdCardPath(con);
if(new File(path).getPath().equal(Environment.getExternalStorageDirectory().getPath())) // This line give null "Null Pointer exception"
{
return null;
}
return path;
}
ich Überprüfung mich, ob die SD-Karte Pfad als Pfad gleiche ist, die durch Environment.getExternalStorageDirectory().getPath()
'Environment.getExternalStorageDirectory()' tut keinen "Kontext" beinhalten, und daher sollten sich seine Ergebnisse nicht ändern, abhängig davon, wo der Anruf getätigt wurde. Bitte geben Sie eine [mcve] an, die zeigt, wie Sie 'Environment.getExternalStorageDirectory()' verwenden und wie Sie festgestellt haben, dass 'null' zurückgegeben wird. – CommonsWare
@CommonsWare Ich habe einige zusätzliche Informationen hinzugefügt. Kannst du bitte einen Blick darauf werfen? – Rahulrr2602
Ich denke, dass es wahrscheinlicher ist, dass 'path'' null' ist, so dass 'new File (path) .getPath()' 'null' ist. BTW, 'neue Datei (Pfad) .getPath()' ist sinnlos - es wäre schneller, dies nur mit 'Pfad' zu ersetzen. Beachten Sie auch, dass 'getExternalStorageDirectory()' auf den meisten Android-Geräten wenig mit "ext sd card" zu tun hat. – CommonsWare