Мне нужна помощь!
Я сделал приложение, в котором мы выбираем файл и копируем его в существующую папку в диспетчере устройств, поэтому здесь я сделал код, не работающий вообще. то, что происходит, может выбрать файл из средства выбора файлов, но не копировать в каталог во внутреннем хранилище, пожалуйста, помогите мне, я знаю, что это глупый вопрос, но мне это вряд ли нужно. Основная проблема заключается в том, как указать путь к выбранному файлу из средства выбора файлов. Пожалуйста, помогите мне
Заранее спасибо
String result = null;
Context mContext;
String extension;
File sourceLocation,targetLocation;
private int REQUEST_CODE;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
sourceLocation = new File (String.valueOf(filePath));
// make sure your target location folder exists!
targetLocation = new File (Environment.getExternalStorageDirectory() + "/myappfolder");
}
public void selectfile(View view) {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M && ContextCompat.checkSelfPermission(getApplication(),
Manifest.permission.READ_EXTERNAL_STORAGE)
!= PackageManager.PERMISSION_GRANTED) {
Intent intent = new Intent(Settings.ACTION_APPLICATION_DETAILS_SETTINGS,
Uri.parse("package:" + getPackageName()));
startActivity(intent);
return;
}
//creating an intent for file chooser
Intent intent = new Intent();
intent.setType("*/*");
intent.setAction(Intent.ACTION_GET_CONTENT);
startActivityForResult(Intent.createChooser(intent, "Select Picture"), SELECT_PICTURE);
copyfile();
}
public void copyfile(){
try {
if (sourceLocation.exists()) {
InputStream in = new FileInputStream(sourceLocation);
OutputStream out = new FileOutputStream(targetLocation);
// Copy the bits from instream to outstream
byte[] buf = new byte[1024];
int len;
while ((len = in.read(buf)) > 0) {
out.write(buf, 0, len);
}
in.close();
out.close();
Toast.makeText(mContext, "Copy file successful.", Toast.LENGTH_SHORT).show();
} else {
Toast.makeText(mContext, "Copy file failed. Source file missing", Toast.LENGTH_SHORT).show();
}
}catch (Exception e){
e.printStackTrace();
}
}
public void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if(requestCode == SELECT_PICTURE && resultCode == RESULT_OK
&& data != null && data.getData() != null )
{
filePath = data.getData();
getFileName(filePath);
getFileExtension(filePath);
}
}