web-dev-qa-db-fra.com

Android comment ouvrir un fichier .DOC?

Y a-t-il un moyen possible d'ouvrir un fichier d'extension .doc?

13
Narendra

Contrairement à iOS, Android ne prend pas en charge le rendu des fichiers .doc ou .ppt. Vous recherchez une intention publique permettant à votre application de réutiliser les activités d'autres applications pour afficher ces types de documents. Mais cela ne fonctionnera que pour un téléphone sur lequel une application installée prend en charge cette intention.

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

ou si vous avez installé une application, utilisez cette intention:

//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);  
30
ρяσѕρєя K

Voici une méthode pour prendre soin de cela pour vous:

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:"));
}
13
Jared Burrows

Ouvrir un document à partir de la liste des applications disponibles L’utilisateur doit choisir une application dans la liste des applications. 

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

vous pouvez ouvrir le fichier dans WebView si vous voulez ouvrir dans l'application . ex: 

 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");
3
Amar1989

Voici la méthode complète pour ouvrir le fichier .doc dans Android 7.0 ou une version inférieure:

Étape 1: Tout d’abord, placez votre fichier PDF dans le dossier des actifs, comme dans la capture d’écran suivante .  Placing doc file in assets folder

Étape 2: Maintenant, allez dans le fichier build.gradle et ajoutez les lignes suivantes:

repositories {
maven {
    url "https://s3.amazonaws.com/repo.commonsware.com"
}

}

puis sous dépendances, ajoutez la ligne suivante et sync:

compile 'com.commonsware.cwac:provider:0.4.3'

Étape 3: .__ Ajoutez maintenant un nouveau fichier Java qui devrait s’étendre de FileProvider Comme dans mon cas, le nom du fichier est LegacyCompatFileProvider et le code qu’il contient.

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)));
  }
}

Étape 4: Créez un dossier nommé "xml" sous le dossier "res". (Si le dossier est déjà là, pas besoin de créer). Ajoutez maintenant un fichier providers_path.xml dans le dossier xml. Voici la capture d'écran:  Place of provider_path xml file

Dans le fichier, ajoutez les lignes suivantes:

<?xml version="1.0" encoding="utf-8"?>
<paths>
    <files-path name="stuff" />
</paths>

Étape 5: Maintenant, allez dans le fichier AndroidManifest.xml et les lignes suivantes dans la balise <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>

Étape 6: Maintenant, allez à la classe d'activité à partir de laquelle vous voulez charger le fichier PDF et ajoutez la ligne suivante ainsi que ces 2 méthodes:

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();
    }

Maintenant, appelez la méthode LoadPdfFile et transmettez votre nom de fichier sans .doc comme dans mon cas "chapter-0" et il ouvrira le fichier doc dans l'application de lecture de doc.

0
Zulqarnain

vous pouvez copier le fichier de la ressource brute sur sdcard, puis appeler startActivity () dans le cadre d’une intention ACTION_VIEW comportant un Uri pointant sur la copie lisible et possédant le type MIME approprié.

Bien entendu, cela ne fonctionnera que sur un périphérique doté d'une visionneuse de documents Word.

0
jeet