Guardar archivo en local en la ruta de la App

AlexxxBcN Seguir

Gamma
Verificación en dos pasos desactivada
Verificado por Whatsapp
¡Usuario con pocos negocios! ¡Utiliza siempre saldo de Forobeta!
Desde
18 Feb 2013
Mensajes
421
Hola :

En la app que estoy haciendo, tengo que guarde un foto poniendo la url , ahora lo estoy haciendo desde un botón y que el usuario la seleccione y se añada ,

pero al seleccionarlo no me lo añade o guarda , la actividad vuelve atrás , y el caso sería que se guardara en la ruta donde se guarda las que añado usando URL

Cuando hago click en el archivo a añadir , sale esto en el log:

Insertar CODE, HTML o PHP:
2020-03-14 13:24:11.848 12775-12775/com.android.documentsui D/PickerActionHandler: onFinished() [content://com.android.providers.downloads.documents/document/msf%3A24]
2020-03-14 13:24:11.850 9473-10765/system_process W/InputReader: Device has associated, but no associated display id.
2020-03-14 13:24:11.855 9473-10495/system_process W/InputReader: Device has associated, but no associated display id.
2020-03-14 13:24:11.856 9473-10495/system_process I/chatty: uid=1000(system) Binder:9473_F identical 1 line
2020-03-14 13:24:11.856 9473-10495/system_process W/InputReader: Device has associated, but no associated display id.
2020-03-14 13:24:12.031 9473-9494/system_process W/InputReader: Device has associated, but no associated display id.
2020-03-14 13:24:12.033 9473-9494/system_process W/InputReader: Device has associated, but no associated display id.

Actualizacion: Dejo una imagen de lo comentado , en la app tengo para agregar una imagen desde una URL , luego me muestra que le añada un nombre y la URL , me lo guarda bien , ahora estoy haciendo un botón para que el usuario agregue la imagen desde archivo.

Dejo una explicacion visual .

pasos.png



Dejo unos codes , por si alguien me comenta si de esta forma se puede lograr hacer funcionar , o si sabe de algún otro método

Gracias , alguna ayuda o idea ?

Parto de estos codes:

Este code va directo a la carpeta descarga o archivos

Insertar CODE, HTML o PHP:
   Intent intent = new Intent();
        Intent chooseFile = new Intent(Intent.ACTION_GET_CONTENT);
        chooseFile.setType("*/*");
        intent.putExtra(Intent.EXTRA_MIME_TYPES, mimetypes);

        chooseFile = Intent.createChooser(chooseFile, "Choose a file");
        startActivityForResult(chooseFile, PICKFILE_RESULT_CODE);

        Browse = (Button)findViewById(R.id.browse);
        Browse.setOnClickListener((View.OnClickListener) this);

        Browse.setOnClickListener(new View.OnClickListener() {
            public void onClick(View v) {
                Intent intent = new Intent(getBaseContext(),           FilePicker.class);
                startActivity(intent);
            }
        });

    }

    public String getPath(Uri uri) {

        String path = null;
        String[] projection = { MediaStore.Files.FileColumns.DATA };
        Cursor cursor = getContentResolver().query(uri, projection, null, null, null);

        if(cursor == null){
            path = uri.getPath();
        }
        else{
            cursor.moveToFirst();
            int column_index = cursor.getColumnIndexOrThrow(projection[0]);
            path = cursor.getString(column_index);
            cursor.close();
        }

        return ((path == null || path.isEmpty()) ? (uri.getPath()) : path);
    }



    public void onClick(View v) {

        if (v.getId() == R.id.browse) {
            Intent intent = new Intent(this, FilePicker.class);
            startActivityForResult(intent, REQUEST_PICK_FILE);

            Toast.makeText(agregarimgactivity.this,
                    getString(R.string.AddFile), Toast.LENGTH_SHORT).show();

        }
    }


    protected void onActivityResult(int requestCode, int resultCode){


        Uri data = null;
        if (data != null) {

            String filePath = getPathFromUri(this, data);
            Log.i("INFO", "FILE: " + filePath);

        }

    }


    public static String getPathFromUri(Context context, Uri uri) {
        final boolean isKitKat = Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT;

        if (isKitKat && DocumentsContract.isDocumentUri(context, uri)) {
            if (isExternalStorageDocument(uri)) {
                final String docId = DocumentsContract.getDocumentId(uri);
                final String[] split = docId.split(":");
                final String type = split[0];

                if ("primary".equalsIgnoreCase(type)) {
                    return Environment.getExternalStorageDirectory() + "/" + split[1];
                }
            } else if (isDownloadsDocument(uri)) {

                final String id = DocumentsContract.getDocumentId(uri);
                final Uri contentUri = ContentUris.withAppendedId(Uri.parse("content://downloads/public_downloads"),
                        Long.valueOf(id));

                return getDataColumn(context, contentUri, null, null);
            } else if (isMediaDocument(uri)) {
                final String docId = DocumentsContract.getDocumentId(uri);
                final String[] split = docId.split(":");
                final String type = split[0];

                Uri contentUri = null;
                if ("image".equals(type)) {
                    contentUri = MediaStore.Images.Media.EXTERNAL_CONTENT_URI;
                } else if ("video".equals(type)) {
                    contentUri = MediaStore.Video.Media.EXTERNAL_CONTENT_URI;
                } else if ("audio".equals(type)) {
                    contentUri = MediaStore.Audio.Media.EXTERNAL_CONTENT_URI;
                }

                final String selection = "_id=?";
                final String[] selectionArgs = new String[] { split[1] };

                return getDataColumn(context, contentUri, selection, selectionArgs);
            }
        } else if ("content".equalsIgnoreCase(uri.getScheme())) {
            return getDataColumn(context, uri, null, null);
        } else if ("file".equalsIgnoreCase(uri.getScheme())) {
            return uri.getPath();
        }

        return null;}

    public static String getDataColumn(Context context, Uri uri, String selection, String[] selectionArgs) {
        Cursor cursor = null;
        final String column = "_data";
        final String[] projection = { column };

        try {
            cursor = context.getContentResolver().query(uri, projection, selection, selectionArgs, null);
            if (cursor != null && cursor.moveToFirst()) {
                final int column_index = cursor.getColumnIndexOrThrow(column);
                return cursor.getString(column_index);
            }
        } finally {
            if (cursor != null)
                cursor.close();
        }
        return null;}

    public static boolean isExternalStorageDocument(Uri uri) {
        return "com.android.externalstorage.documents".equals(uri.getAuthority());}

    public static boolean isDownloadsDocument(Uri uri) {
        return "com.android.providers.downloads.documents".equals(uri.getAuthority());}




    public static boolean isMediaDocument(Uri uri) {
        return "com.android.providers.media.documents".equals(uri.getAuthority());}
 
Última edición:

AlexxxBcN

Gamma
Verificación en dos pasos desactivada
Verificado por Whatsapp
¡Usuario con pocos negocios! ¡Utiliza siempre saldo de Forobeta!
Desde
18 Feb 2013
Mensajes
421
Post actualizado con mas info en imágen y más code añadido
 

Reyes87

No recomendado
Verificación en dos pasos desactivada
Verificado por Whatsapp
¡Usuario con pocos negocios! ¡Utiliza siempre saldo de Forobeta!
Desde
2 Abr 2020
Mensajes
87
Por favor, ten en cuenta 📝 que si deseas hacer un trato 🤝 con este usuario, está baneado 🔒.
Exactamente que es lo que quieres hacer guardar el archivo desde la url o solo agregar la url ?
 

AlexxxBcN

Gamma
Verificación en dos pasos desactivada
Verificado por Whatsapp
¡Usuario con pocos negocios! ¡Utiliza siempre saldo de Forobeta!
Desde
18 Feb 2013
Mensajes
421
Exactamente que es lo que quieres hacer guardar el archivo desde la url o solo agregar la url ?

Tengo la funcion añadir desde url , y lo que quiero ahora es añadir desde archivo seleccionado por el usuario
 

¡Regístrate y comienza a ganar!

Beneficios

  • Gana dinero por participar
  • Gana dinero por recomendarnos
  • Descubre ofertas de empleo diariamente
  • Negocios seguros
  • ¡Información premium y más!

Acceder

¿Ya tienes una cuenta? Accede aquí

Arriba