Есть ли способ открыть файл с расширением .doc?
Android, как открыть файл с расширением .doc?
Ответы (6)
В отличие от iOS, сам Android не поддерживает рендеринг файлов .doc или .ppt. Вы ищете общедоступное намерение, позволяющее вашему приложению повторно использовать действия других приложений для отображения этих типов документов. Но это будет работать только для телефона, на котором установлено приложение, поддерживающее это намерение.
http://developer.android.com/guide/topics/intents/intents-filters.html< /а>
или если вы установили какое-то приложение, используйте это намерение:
//Uri uri = Uri.parse("file://"+file.getAbsolutePath());
Intent intent = new Intent();
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
intent.setAction(Intent.ACTION_VIEW);
String type = "application/msword";
intent.setDataAndType(Uri.fromFile(file), type);
startActivity(intent);
Открыть документ из списка доступных приложений. Пользователь должен выбрать приложение из списка приложений.
File targetFile = new File(path);
Uri targetUri = Uri.fromFile(targetFile);
Intent intent = new Intent(Intent.ACTION_VIEW);
intent.setDataAndType(targetUri, "application/*");
startActivityForResult(intent, DOC);
request_code
в startActivityForResult()
. DOC не представляет собой конкретный код запроса.
- person cagcak; 30.05.2014
Вот способ позаботиться об этом для вас:
public void openDocument(String name) {
Intent intent = new Intent(android.content.Intent.ACTION_VIEW);
File file = new File(name);
String extension = android.webkit.MimeTypeMap.getFileExtensionFromUrl(Uri.fromFile(file).toString());
String mimetype = android.webkit.MimeTypeMap.getSingleton().getMimeTypeFromExtension(extension);
if (extension.equalsIgnoreCase("") || mimetype == null) {
// if there is no extension or there is no definite mimetype, still try to open the file
intent.setDataAndType(Uri.fromFile(file), "text/*");
} else {
intent.setDataAndType(Uri.fromFile(file), mimetype);
}
// custom message for the intent
startActivity(Intent.createChooser(intent, "Choose an Application:"));
}
вы можете открыть файл в веб-просмотре, если хотите открыть в приложении. бывший:
String doc="<iframe src='http://docs.google.com/viewer? url=http://www.iasted.org/conferences/formatting/presentations-tips.ppt&embedded=true'"+
" width='100%' height='100%' style='border: none;'></iframe>";
WebView wv = (WebView)findViewById(R.id.fileWebView);
wv.getSettings().setJavaScriptEnabled(true);
wv.getSettings().setAllowFileAccess(true);
//wv.loadUrl(doc);
wv.loadData( doc , "text/html", "UTF-8");
Вот полный способ открыть файл .doc в Android 7.0 или младше:
Шаг 1. Прежде всего поместите файл PDF в папку с ресурсами, как показано на следующем снимке экрана.
Шаг 2. Теперь перейдите в файл build.gradle и добавьте следующие строки:
repositories {
maven {
url "https://s3.amazonaws.com/repo.commonsware.com"
}
}
а затем в зависимостях добавьте следующую строку и синхронизируйте:
compile 'com.commonsware.cwac:provider:0.4.3'
Шаг 3. Теперь добавьте новый java-файл, который должен расширяться от FileProvider
. Например, в моем случае имя файла LegacyCompatFileProvider
и код внутри него.
import android.database.Cursor;
import android.net.Uri;
import android.support.v4.content.FileProvider;
import com.commonsware.cwac.provider.LegacyCompatCursorWrapper;
public class LegacyCompatFileProvider extends FileProvider {
@Override
public Cursor query(Uri uri, String[] projection, String selection, String[] selectionArgs, String sortOrder) {
return(new LegacyCompatCursorWrapper(super.query(uri, projection, selection, selectionArgs, sortOrder)));
}
}
Шаг 4. Создайте папку с именем "xml"
в папке "res"
. (если папка уже есть то создавать не надо). Теперь добавьте файл providers_path.xml
в папку xml
. Вот скриншот:
Внутри файла добавьте следующие строки:
<?xml version="1.0" encoding="utf-8"?>
<paths>
<files-path name="stuff" />
</paths>
Шаг 5. Теперь перейдите к файлу AndroidManifest.xml
и следующим строкам в теге <application></application>
:
<provider
android:name="LegacyCompatFileProvider"
android:authorities="REPLACE_IT_WITH_PACKAGE_NAME"
android:exported="false"
android:grantUriPermissions="true">
<meta-data
android:name="android.support.FILE_PROVIDER_PATHS"
android:resource="@xml/provider_paths"/>
</provider>
Шаг 6. Теперь перейдите к классу Activity, из которого вы хотите загрузить PDF-файл, и добавьте следующую 1 строку и эти 2 метода:
private static final String AUTHORITY="REPLACE_IT_WITH_PACKAGE_NAME";
static private void copy(InputStream in, File dst) throws IOException {
FileOutputStream out=new FileOutputStream(dst);
byte[] buf=new byte[1024];
int len;
while ((len=in.read(buf)) > 0) {
out.write(buf, 0, len);
}
in.close();
out.close();
}
private void LoadPdfFile(String fileName){
File f = new File(getFilesDir(), fileName + ".doc");
if (!f.exists()) {
AssetManager assets=getAssets();
try {
copy(assets.open(fileName + ".doc"), f);
}
catch (IOException e) {
Log.e("FileProvider", "Exception copying from assets", e);
}
}
Intent i=
new Intent(Intent.ACTION_VIEW,
FileProvider.getUriForFile(this, AUTHORITY, f));
i.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION);
startActivity(i);
finish();
}
Теперь вызовите метод LoadPdfFile
и передайте имя файла без .doc
, как в моем случае "chapter-0"
, и он откроет файл документа в приложении для чтения документов.
вы можете скопировать файл из необработанного ресурса на SD-карту, а затем вызвать startActivity() для намерения ACTION_VIEW, Uri которого указывает на удобочитаемую копию, а также имеет правильный тип MIME.
Конечно, это будет работать только на устройстве, на котором установлено средство просмотра документов Word.