Я пробую множество способов открыть папку «Загрузки» пользователя и позволяю пользователю ТОЛЬКО выбирать файл doc или pdf для открытия. Большинство методов устарели, и их альтернативы, похоже, не работают для меня.
Текущий код:
// I've heavily altered the code but hope you guys understand the gist of it.
//Steps:
// Open the Downloads folder
// Let user select the pdf or docx.
// Open the doc or pdf.
// Adding Syllabus Function Method Here.
addSyllabus = findViewById(R.id.add_syllabus_button);
addSyllabus.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
webview = (WebView) findViewById(R.id.webView);
progressbar = (ProgressBar) findViewById(R.id.progressBar);
webview.getSettings().setJavaScriptEnabled(true);
String filename = "https://s25.q4cdn.com/967830246/files/doc_downloads/test.pdf";
webview.loadUrl("http://docs.google.com/gview?embedded=true&url = " + filename);
webview.setWebViewClient(new WebViewClient() {
public void onPageFinished(WebView view, String url) {
// do your stuff here
progressbar.setVisibility(View.GONE);
}
});
}
});
Цените это, спасибо.
@blackapps Я прошел несколько итераций этого раздела и просто вставил все, что у меня было на данный момент. Поэтому я и сказал, если вы понимаете суть происходящего.
Intent
от DocumentsProvider, вероятно, ваш лучший выбор.
Из этого Google Guide:
private void openFile(Uri pickerInitialUri) {
Intent intent = new Intent(Intent.ACTION_OPEN_DOCUMENT);
intent.addCategory(Intent.CATEGORY_OPENABLE);
intent.setType("application/pdf");
// Optionally, specify a URI for the file that should appear in the
// system file picker when it loads.
intent.putExtra(DocumentsContract.EXTRA_INITIAL_URI, pickerInitialUri);
startActivityForResult(intent, PICK_PDF_FILE);
Вы можете использовать setType
, как показано, и если вы хотите по умолчанию использовать Загрузки, вы можете использовать putExtra
, как показано. Измените pickerInitialUri
на правильный URI, который, я думаю, можно найти как константу: Environment.DIRECTORY_DOWNLOADS.
Обновление: теперь я понимаю, что вам нужно более одного типа файла. По этой теме: вы можете использовать:
String [] mimeTypes = {"application/pdf", "application/msword", "application/vnd.openxmlformats-officedocument.wordprocessingml.document"};
intent.setType("*/*");
intent.putExtra(Intent.EXTRA_MIME_TYPES, mimeTypes);
(Я получил строки типа MIME от mozilla.)
Что именно я должен передать в параметр?
Я не совсем уверен, о каком параметре вы говорите. для вызова putExtra
вам, вероятно, следует изменить второй параметр на Environment.DIRECTORY_DOWNLOADS
, но я сам это не проверял. Кроме того, вам потребуются определенные разрешения, но для этого я направлю вас к другим темам; есть много. Смотрите мое редактирование, если вам нужно больше разъяснений по setType
.
ways to open the Downloads folder of the user and allowing the user to ONLY select a doc or pdf file to open up.
Выложенный вами код не имеет к этому никакого отношения. Или с темой вашего поста.