在Android上从文件加载.json文件时出现问题

时间:2016-02-26 19:52:48

标签: java android json file uri

首先,如果你能帮助我,我感谢你们。

在我的项目中,我必须在我的应用程序中上传文件.json,然后从浏览器中获取。

我使用Intent过滤器从 Manifest.xml 处理它如下:

    <intent-filter>
        <action android:name="android.intent.action.VIEW" />
        <category android:name="android.intent.category.DEFAULT" />
        <data android:scheme="file"  android:host="*" android:pathPattern=".*\\.json" android:mimeType="*/*"  />
    </intent-filter>

然后,从MainActivity.java,我构造File对象并从创建的文件中获取String结果:

 @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        Intent intent = getIntent();
        String action = intent.getAction();
        Uri uri = intent.getData();

        if (action != null){
            if (action.compareTo(Intent.ACTION_VIEW) == 0) {
                String scheme = intent.getScheme();
                String path = intent.getDataString();                 

                if (scheme.compareTo(ContentResolver.SCHEME_FILE) == 0) {

                    try {
                        InputStream inputStream = getContentResolver().openInputStream(uri);
                        System.out.println("InputStream loaded");
                    } catch (FileNotFoundException e) {
                        System.out.println("InputStream not loaded");
                        e.printStackTrace();
                    }    
                }
            }
        }
    }

String对象路径的值为 file:///storage/emulated/0/Download/prova.json

主要的问题是,当我尝试加载文件时,它会抛出一个异常,说该文件不存在,即使它确实存在。

再次感谢大家!

1 个答案:

答案 0 :(得分:0)

因此,您要阅读的json位于设备存储上,因此在您的清单中需要启用以下权限

这将使tour应用程序能够读取应用程序上下文之外的设备上的文件