1

我在本机应用程序中打开内部数据文件时遇到问题

指出我对 Android 开发相当陌生,但对编程并不陌生,这一点非常重要

设置

我有一个在 Android 设备上运行的移动 Air 应用程序。为了在应用程序中加载 PDF/播放视频,我编写了一个本机扩展程序来通过其本机应用程序加载文件。

问题

在测试应用程序时,我发现存储在外部存储中的文件加载正常,内部存储中的文件显示来自本机应用程序的消息,例如无法播放文件或无法打开文件。(内部存储中的文件被下载并保存在空中申请结束)。

这让我认为它是 Android 中的权限设置。

我知道内部存储中的文件默认是私有的

我已经阅读了如何使用 openFileOutput 写入设置其权限的文​​件,但由于文件已经存在,这将不起作用。我可以加载文件并再次将其吐出,但这并不理想,因为这可能会导致不必要的开销。

我不确定如何继续,我需要在 Air App 端设置清单属性吗?安卓应用端?双方?如果是的话,是哪一个,在哪里

或者他们是在运行时更改它的一种方法,我发现了 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