1

ネイティブ アプリケーションで内部データ ファイルを開く際に問題が発生しています

私は Android 開発はかなり初心者ですが、プログラミングは初めてではないことを指摘することは適切に重要です。

設定

Android デバイスで実行しているモバイル Air アプリケーションがあります。アプリケーション内で PDF をロード/ビデオを再生するために、ネイティブ アプリケーションを介してファイルをロードするためのネイティブ拡張機能を作成しました。

問題

アプリをテストしたところ、外部ストレージに保存されたファイルが正常にロードされ、内部ストレージのファイルが、ファイルを再生できない、ファイルを開けないなどのネイティブ アプリケーションからのメッセージを表示していたことがわかりました (内部ストレージのファイルはダウンロードされ、Air に保存されます)申し込み終了)。

これにより、Android 内でのアクセス許可の設定だと思いました。

内部ストレージ内のファイルはデフォルトで非公開であることを知っています

openFileOutput を使用してアクセス許可を設定するファイルに書き込む方法を読みましたが、ファイルが既に存在するため、これは機能しません。ファイルをロードして再度吐き出すこともできますが、不要なオーバーヘッドが発生する可能性があるため、これは理想的ではありません。

進め方がわからないのですが、Air App 側でマニフェストのプロパティを設定する必要がありますか? Androidアプリ側?両側?もしそうなら、どれがどこで

または、実行時に変更する方法です。 setReadable 関数を見つけましたが、API レベル 9 であり、理想的にはそれよりも少し低いことを目指しています。

どんな助けでも大歓迎です

public static void openFile( Activity parentActivity, String filePath, String fileType, String mimeType ) {

    //Create the file we are to create 
    File fileToOpen = new File(filePath);

    //Check if the file exists 
    if( fileToOpen.exists() ) {

        //The path of the file we want to open
        Uri path = Uri.fromFile(fileToOpen);

        //Create a new intent of the file we want to view
        Intent intent = new Intent(Intent.ACTION_VIEW);

        //Set the path and the mime type  for the file 
        intent.setDataAndType(path, mimeType);

        //Remove any other activities 
        intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);

        //Check that its within the try and catch block
        try {


            //Open the file by stating a new activity 
            parentActivity.startActivity(intent);            
        } 
        catch (ActivityNotFoundException e) {

            //Make a pop-up informing that we don't have an application to open the file
            Toast.makeText( parentActivity,"No Application Available to View " + fileType,Toast.LENGTH_SHORT).show();
        }

    } else {

        //Display an alert which will show that the file dosn't exist
        Toast.makeText( parentActivity, fileType+" file dosn't exist", Toast.LENGTH_SHORT).show();      
    }
}
4

0 に答える 0