2

Я перечисляю файлы PDF в папке. Но я хочу, чтобы их называли именами файлов, а не sdcard/mypath/files. Также я хочу их открывать всякий раз, когда я нажимаю их через программу просмотра PDF. Мой код:Как открыть файл в списке массивов после нажатия?

public class activity1 extends ListActivity { 

private List<String> fileList = new ArrayList<String>(); 

@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    File root = new File("sdcard/mypath"); 
    ListDir(root); 
} 

void ListDir(File f) { 
    File[] files = f.listFiles(); 
    fileList.clear(); 
    for (File file : files) { 
     fileList.add(file.getPath()); 
    } 
    ArrayAdapter<String> directoryList = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, fileList); 
    setListAdapter(directoryList); 
}} 
+0

Вы пытались использовать метод 'onclick''? –

+0

Спасибо Дональд! Нет. Я не думаю об использовании setOnItemClickListener. Где я должен его использовать? Также, как насчет имен? –

+0

вы можете попробовать '' setOnItemClickListener'' в свой '' каталогList'' –

ответ

0
public class activity1 extends ListActivity { 
    ListView lv; 
    private List<String> fileList = new ArrayList<String>(); 

    @Override 
    public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    File root = new File("sdcard/mypath"); 
     lv = getListView(); 
     ListDir(root); 
     } 

    void ListDir(File f) { 
     File[] files = f.listFiles(); 
    fileList.clear(); 
for (File file : files) { 
    fileList.add(file.getName()); 
} 
ArrayAdapter<String> directoryList = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, fileList); 
setListAdapter(directoryList); 
    lv.setOnItemClickListener(new AdapterView.OnItemClickListener() { 
     @Override 
     public void onItemClick(AdapterView<?> adapterView, View view, int i, long l) { 
      viewPdf(fileList.get(i)); 
     } 
    }); 
} 

}} 

и открыть файл в PDF-файл по умолчанию Телезритель PDF

 private void viewPdf(String file) { 

     File pdfFile = new File(Environment.getExternalStorageDirectory() + "/" + "mypath"+ "/" + file); 
     Uri path = Uri.fromFile(pdfFile); 

     // Setting the intent for pdf reader 
    Intent pdfIntent = new Intent(Intent.ACTION_VIEW); 
    pdfIntent.setDataAndType(path, "application/pdf"); 
    pdfIntent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); 


     startActivity(pdfIntent); 
    } 

Используйте код выше .. Надеюсь, что это помогает!

+0

спасибо! Но как я могу открыть эти файлы? И как я могу назвать их соответствующим образом, а не их пути к файлам. –

+0

при отправке имен в адаптер просто отправил имена файлов в одиночку, а не в пути к файлам –

+0

file.getName(); –

0

Ниже приведен код, который поможет открыть файл с этими типами. проверить этот ответ:

public static Intent getOpenFileIntent(Context ctx, String path) { 

    Intent intent = new Intent(Intent.ACTION_VIEW); 
    try { 
     File file = new File(path); 
     Uri uri = Uri.fromFile(file); 
     String extension = MimeTypeMap.getFileExtensionFromUrl(path); 
     if (extension != null) { 
      String type = MimeTypeMap.getSingleton().getMimeTypeFromExtension(extension); 
      boolean status = canDisplay(ctx, type); 
      if (type == null || !status) { 
       type = "*/*"; 
      } 
      if (!status) { 
       Toast.makeText(ctx, "Cannot find appropriate Application", Toast.LENGTH_LONG).show(); 
      } 
      intent.setDataAndType(uri, type); 
     } 
    } catch (Exception e) { 
     AppLog.exception(e); 
    } 
    return intent; 
} 

и ниже коды будет проверить, что конкретное ActionView приложение присутствует или нет

static boolean canDisplay(Context context, String mimeType) { 
    try { 
     PackageManager packageManager = context.getPackageManager(); 
     Intent testIntent = new Intent(Intent.ACTION_VIEW); 
     testIntent.setType(mimeType); 
     return packageManager.queryIntentActivities(testIntent, PackageManager.MATCH_DEFAULT_ONLY).size() > 0; 
    } catch (Exception e) { 
     AppLog.exception(e); 
    } 
    return false; 
} 

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

UPDATE

Перед отправить файл в этой функции убедитесь, что конкретный файл присутствует и читаемым.

+0

Благодарим вас за ответ! –

 Смежные вопросы

  • Нет связанных вопросов^_^