0

画像または音声を開くには、次のコードを使用できます。

public String getExt(String filename)
{
    int dotIndex = 0;
    for(int i = filename.length()-1; i >= 0; i--)
    {
        if(filename.charAt(i) == '.')
        {
            dotIndex = i;
            break;
        }
    }

    return filename.substring(dotIndex + 1, filename.length());
}

public String getTypeAction(String s)
{
    int slashIndex = 0;
    for(int i = 0; i < s.length(); i++)
    {
        if(s.charAt(i) == '/')
        {
            slashIndex = i;
            break;
        }
    }
    return s.substring(0, slashIndex);
}
//////
//////

MimeTypeMap mime = MimeTypeMap.getSingleton();
String ext = getExt(file_to_action.getName());
ext = ext.toLowerCase();

String type = mime.getMimeTypeFromExtension(ext);

Intent intent = new Intent();
intent.setAction(android.content.Intent.ACTION_VIEW);
intent.setDataAndType(Uri.fromFile(file_to_action), getTypeAction(type) + "/*" );
startActivity(intent); !>

しかし、問題は、.mhtml、.bak などの別のファイルを開きたい場合です。apk. これを行うと、アプリケーションがクラッシュします。どこに問題があるのか​​ わかりません.mhtml、.odt extenioのアプリケーションがありますが、アプリケーションはこのアプリケーションを使用してファイルを開くことができません。すべてのファイル形式を開く方法、または任意のファイル形式で使用可能なアプリケーションを確認する方法を教えてください。

4

2 に答える 2

1

あなたもこれを行うことができます

 File file = new File(filepath);

  String extension =   file.getName().substring(file.getName().lastIndexOf(".")+1);

    MimeTypeMap mime = MimeTypeMap.getSingleton();
    String type = mime.getMimeTypeFromExtension(extension);
    Intent intent = new Intent();

    intent.setAction(android.content.Intent.ACTION_VIEW);
  intent.setDataAndType(Uri.fromFile(file), type);
    startActivity(intent);
于 2015-04-19T22:33:33.873 に答える
0

このタイプのデータを処理するアプリケーションが電話にインストールされていないため、これはクラッシュします。

からを使用queryIntentActivies(intent,flags)して、PackageManagerを処理できるアプリケーションがあるかどうかを確認する必要がありますIntentList<ResolveInfo>サイズが 0 より大きい場合は、データを処理できるアプリケーションが存在します。サイズが 0 の場合は、a を表示Toastしてデータを処理できないことをユーザーに通知しstartActivity()、この場合も呼び出さないでください。

于 2012-06-20T11:26:54.857 に答える