이 난 내부 저장 파일에 액세스 할 수 있습니다 내 시도이다. 나는 내부 저장 디렉토리에 액세스 할 수 없습니다 나처럼> (23) 때문에이 권한 문제 API 레벨에서 권한을 사용하는 방법에 대한 중요한 정보를 가지고 위의 링크에서
https://developer.android.com/training/permissions/requesting.html
.
최종 코드 : -
public class MainActivity extends Activity {
ListView lv;
private static final int MY_PERMISSIONS_REQUEST_READ_CONTACTS = 1;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
lv = (ListView) findViewById(R.id.list);
if (ContextCompat.checkSelfPermission(MainActivity.this,
Manifest.permission.READ_EXTERNAL_STORAGE)
!= PackageManager.PERMISSION_GRANTED) {
// Should we show an explanation?
if (ActivityCompat.shouldShowRequestPermissionRationale(MainActivity.this,
Manifest.permission.READ_EXTERNAL_STORAGE)) {
} else {
// No explanation needed, we can request the permission.
ActivityCompat.requestPermissions(MainActivity.this,
new String[]{Manifest.permission.READ_EXTERNAL_STORAGE},
MY_PERMISSIONS_REQUEST_READ_CONTACTS);
// MY_PERMISSIONS_REQUEST_READ_CONTACTS is an
// app-defined int constant. The callback method gets the
// result of the request.
}
} else {
ArrayList<String> filesinfolder = GetFiles("/sdcard/");
ArrayAdapter<String> adapter
= new ArrayAdapter<String>(this,
android.R.layout.simple_list_item_1,
filesinfolder);
lv.setAdapter(adapter);
}
}
@Override
public void onRequestPermissionsResult(int requestCode,
String permissions[], int[] grantResults) {
switch (requestCode) {
case MY_PERMISSIONS_REQUEST_READ_CONTACTS: {
// If request is cancelled, the result arrays are empty.
if (grantResults.length > 0
&& grantResults[0] == PackageManager.PERMISSION_GRANTED) {
ArrayList<String> filesinfolder = GetFiles("/sdcard/");
ArrayAdapter<String> adapter
= new ArrayAdapter<String>(this,
android.R.layout.simple_list_item_1,
filesinfolder);
lv.setAdapter(adapter);
} else {
// permission denied, boo! Disable the
// functionality that depends on this permission.
}
return;
}
// other 'case' lines to check for other
// permissions this app might request
}
}
public ArrayList<String> GetFiles(String directorypath) {
ArrayList<String> Myfiles = new ArrayList<String>();
File f = new File(directorypath);
f.mkdirs();
File[] files = f.listFiles();
if (files.length == 0) {
return null;
} else {
for (int i = 0; i < files.length; i++)
Myfiles.add(files[i].getName());
}
return Myfiles;
}
} 그 후 저장에서 파일 이름을 검색하는 방법을 인터넷에
검색 문자열 배열로리스트 뷰를 채우는 방법을 검색 할 수 있습니다. 우리는 당신의 코드에서 문제를 해결할 수 있도록 도와줍니다. – Denny
@Denny : - 모든 파일을 가져올 수 없습니다 .2 개의 파일을 에뮬레이션하고 자체적으로 가져 왔습니다. 나는 다른 폴더에있는 모든 파일을 원한다. 당신의 제안에 따라 나는 이것을 시도했다. http://stackoverflow.com/questions/37022683/how-to-read-file-names-from-internal-storage-in-android –
내부 저장소에 대해 염두에 두어야 할 점이 명확하지 않습니다. 명시 해주세요. – greenapps