Где сохранять документ PDF внутри моего App?

Я пробую сохранять документ PDF в моем App, но не знаю, где помещать это и как формулировать простого intent чтобы это открывать.

У меня было место это:

Intent intent = new Intent(Intent.ACTION_VIEW);
         intent.setDataAndType(path, "application/pdf");
         intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
         startActivity(intent);
         finish();

Но не открывают мне никакого PDF.

Изданный:

У меня есть сейчас это:

Intent intentpak = new Intent();
                        intentpak.setAction(Intent.ACTION_VIEW);
                        intentpak.addCategory(Intent.CATEGORY_BROWSABLE);
                        intentpak.setData(Uri.parse("www.yyyy.com/zzz.pdf"));
                        startActivity(intentpak);

Но открывают мне pdf и каждый раз сохраняют я в мобильном телефоне и мне занимает место каждый документ, что я под, я хочу сохранять это внутри и не наполнить мою память.

1
задан 22.05.2017, 17:13
1 ответ

Я, что я обычно делаю, он состоит в том, чтобы загружать мне файлы в каталоге внутри пакета ее aplicaciГіn и подтверждать, уже существует ли файл перед тем, как это загружать, если уже он существует, я даю ее ему opciГіn открытия этого или загружения этого снова.

, Чтобы сохранять в папке, что я упомянул о тебе, использовал следующее:

File f = getActivity().getExternalFilesDir(Environment.DIRECTORY_DOWNLOADS);
f.getAbsolutePath()+"/"+ nombre_archivo;

DespuГ©s, чтобы подтверждать, существует ли он в папке, использовал следующее:

File archivoDescargadoAnt = getActivity().getExternalFilesDir(Environment.DIRECTORY_DOWNLOADS);
ext = new File(archivoDescargadoAnt.getAbsolutePath()+"/"+nombre_archivo);

if(ext.exists())
      existeArchivo = true;

И из-за Гєltimo:

if(existeArchivo ){
      archivoGuardado = ext.getAbsolutePath();

      AlertDialog.Builder dialog = new AlertDialog.Builder(getActivity());
           dialog.setMessage("El archivo ya existe.¿que desea hacer?");
           dialog.setIcon(android.R.drawable.ic_dialog_info);
           dialog.setCancelable(true);
           dialog.setPositiveButton("Abrir"), new DialogInterface.OnClickListener() {
                  public void onClick(DialogInterface dialog, int id) {
                        //Abrir
                        abrirArchivo(getActivity(), archivoGuardado);
                        dialog.cancel();
                  }
           });
           dialog.setNegativeButton("Descargar de nuevo"), new DialogInterface.OnClickListener() {
                  public void onClick(DialogInterface dialog, int id) {
                        // Volver a descargar
                        descargarArchivo(recurso);
                        dialog.cancel();
                  }
           });

           dialog.show();
 }
 else
     descargarArchivo(recurso);

И чтобы открывать файл, я использую следующее:

public void abrirArchivo(Context context, String archivo){
      try {
          Uri uri  = Uri.fromFile(new File(archivo));
          Intent intentUrl = new Intent(Intent.ACTION_VIEW);

          //obtenemos la extension del archivo y su mime type para abrirlo
          String extension = android.webkit.MimeTypeMap.getFileExtensionFromUrl(uri.toString());
          String mimetype = "";

          if(extension != null && extension.length()>0)
               mimetype = android.webkit.MimeTypeMap.getSingleton().getMimeTypeFromExtension(extension.toLowerCase());
          else{
               //mimetype = "*/*";
               mimetype = URLConnection.guessContentTypeFromName(archivo);

          }

    //    Log.i(tag, "uri: " + uri.toString() + "extension: "+ extension + " mimetype: " + mimetype);

          intentUrl.setDataAndType(uri, mimetype);
    //             intentUrl.setData(uri);
          intentUrl.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
          context.startActivity(intentUrl);
      }catch (ActivityNotFoundException e){
          Toast.makeText(context, getResources().getString(R.string.no_app_instalada), Toast.LENGTH_LONG).show();
      }catch (Exception e){
          Toast.makeText(context, getResources().getString(R.string.error_abriendo_archivo), Toast.LENGTH_LONG).show();
      }
}
1
ответ дан 24.11.2019, 13:26
  • 1
    если тебя подал мой ответ ты agradecerí в который ты пометишь ее как правильная для того, чтобы он смог подавать их в другим пользователям помощи. Привет – Joacer 22.05.2017, 17:15
  • 2
    для которых или у нас нет даже идея.... не схватывай выражение, внутри которого зона нужна помещать это: я имею в виду помещать это в oncreate, или в public class MainActivity extends AppCompatActivity { или donde¿? – no existent 03.03.2019, 08:32
  • 3
    @noexistent так как dependerá немного, из которого он сделал твой có я говорю, в этом случае я думаю, что пользователь загружал документ, но он не показывал có mo, из-за которого podrí чтобы идти внутри AsyncTask или Service. С другой стороны, если то, что ты хочешь, só это открывать файл ты можешь помещать ló gica внутри OnClick button – Joacer 04.03.2019, 10:14