Android, как открыть файл с расширением .doc?

Есть ли способ открыть файл с расширением .doc?


person Narendra    schedule 20.04.2012    source источник
comment
Что вы имеете в виду под открытием файла . Вы хотите просмотреть файл или что использовать содержимое файла.   -  person MrWaqasAhmed    schedule 20.04.2012
comment
попробуйте Quick Office на рынке Android для просмотра MS Word, Excel, PDF-файлов.   -  person Dinesh    schedule 20.04.2012
comment
чувак, я хочу открыть в своем приложении   -  person Narendra    schedule 20.04.2012
comment
stackoverflow.com/questions/2902689/ это может помочь.   -  person MrWaqasAhmed    schedule 20.04.2012


Ответы (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);  
person ρяσѕρєя K    schedule 20.04.2012

Открыть документ из списка доступных приложений. Пользователь должен выбрать приложение из списка приложений.

File targetFile = new File(path);
                    Uri targetUri = Uri.fromFile(targetFile);
                    Intent intent = new Intent(Intent.ACTION_VIEW);
                    intent.setDataAndType(targetUri, "application/*");
                    startActivityForResult(intent, DOC);
person sravan    schedule 02.01.2013
comment
Итак, что такое 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:"));
}
person Jared Burrows    schedule 28.12.2012
comment
if (intent.resolveActivity(getPackageManager())!= null) { startActivity(Intent.createChooser(intent, Choose an Application:)); } else { Toast.makeText(ctxt, Подходящее приложение не установлено., Toast.LENGTH_SHORT).show(); } - person ashishdhiman2007; 14.11.2018

вы можете открыть файл в веб-просмотре, если хотите открыть в приложении. бывший:

 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");
person Amar1989    schedule 19.01.2015
comment
Я пытался посмотреть, какие параметры у меня есть для создания предварительного просмотра файла, не знал, что вы можете отправить Google docs URL-адрес! - person Jhuliano Moreno; 23.01.2015
comment
Но файл находится в папке локальных активов. Вы описываете способ отображения удаленных файлов - person Kannan_SJD; 08.08.2018
comment
он показывает широкоэкранный режим, можем ли мы поместиться внутри мобильного устройства, у вас есть какое-либо решение для этого - person Kishan Donga; 29.04.2020

Вот полный способ открыть файл .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-файла provider_path

Внутри файла добавьте следующие строки:

<?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", и он откроет файл документа в приложении для чтения документов.

person Zulqarnain    schedule 22.08.2017

вы можете скопировать файл из необработанного ресурса на SD-карту, а затем вызвать startActivity() для намерения ACTION_VIEW, Uri которого указывает на удобочитаемую копию, а также имеет правильный тип MIME.

Конечно, это будет работать только на устройстве, на котором установлено средство просмотра документов Word.

person jeet    schedule 20.04.2012