2012-04-20 3 views
12

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

+1

Что вы подразумеваете под открытым файлом. Вы хотите просмотреть файл или что использовать содержимое файла. – MrWaqasAhmed

+0

для просмотра в моем приложении – Narendra

+0

попробуйте быстрый офис на рынке Android для открытого слова ms, excel, pdf file viewer – Dinesh

ответ

0

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

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

26

В отличие от iOS, сам Android не поддерживает рендеринг .doc или .ppt-файлов. Вы ищете публичное намерение, которое позволяет вашему приложению повторно использовать действия других приложений для отображения этих типов документов. Но это будет работать только для телефона, на котором установлено приложение, поддерживающее этот Intent.

http://developer.android.com/guide/topics/intents/intents-filters.html

или если вы установили некоторые приложения затем использовать этот Intent:

//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); 
+0

Работал как очарование. –

11

Вот метод, чтобы заботиться об этом для Вас:

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:")); 
} 
9

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

File targetFile = new File(path); 
        Uri targetUri = Uri.fromFile(targetFile); 
        Intent intent = new Intent(Intent.ACTION_VIEW); 
        intent.setDataAndType(targetUri, "application/*"); 
        startActivityForResult(intent, DOC); 
+0

Итак, что такое 'request_code' в' startActivityForResult() '. DOC не представляет собой конкретный код запроса. – CagCak

3

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

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"); 
+0

Я пытался выяснить, какие параметры мне нужно было создать для предварительного просмотра файла, не знал, что вы можете отправить google docs URL! –

0

Вот полный способ открыть файл .doc в Android 7.0 или менее:

Шаг 1: Прежде всего, поместите файл в формате PDF в активы папку вроде следующий снимок экрана. Placing doc file in assets folder

Шаг-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.Вот скриншот: Place of provider_path xml file

Внутри файла оных следующие строки:

<?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 from wh прежде чем вы хотите загрузить 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" и он будет открыть файл DOC в приложении для чтения дока.

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