处理内容://从Android DownloadManager共享的网址

时间:2013-06-20 11:43:49

标签: android android-intent

所以,我希望我的应用程序能够上传用户与之共享的文件。我通过file:// urls处理从我的各种文件浏览器共享的文件,然后通过content:// URL处理从Gallery共享的内容。一切都很好,除了我随机决定从DownloadManager测试共享。

以下是代码:

@Override
protected void onNewIntent(Intent intent) {

super.onNewIntent(intent);

if(intent.getAction() == Intent.ACTION_SEND) {
    Uri fileUri = (Uri) intent.getParcelableExtra(Intent.EXTRA_STREAM);
    if(fileUri != null) {

        if(fileUri.getScheme().equals("content")) {
            try {
                Uri data = intent.getData();
                InputStream input = getContentResolver().openInputStream(fileUri);
                //Do something with InputStream
            } catch(Exception e) {
                //Log exception/show error
            }

        }

    }
}
}

但是,每当我尝试将Uri“数据”传递给openInputStream时,我得到一个NullPointerException,因为getData()返回null,即使我在这个主题上看到的其他问题都说使用了getData()。

当我尝试将“fileUri”传递给openInputStream时,正如我在代码中所做的那样,我得到了安全性异常:

06-20 12:41:24.310: E/AndroidRuntime(12375): java.lang.SecurityException: Permission Denial: reading com.android.providers.downloads.DownloadProvider uri content://downloads/all_downloads/433 from pid=12375, uid=10212 requires android.permission.ACCESS_ALL_DOWNLOADS, or grantUriPermission()

我已尝试添加此权限,但我知道任何应用都无法使用该权限。

所以,我不知道如何尝试从Intent中提取文件数据,希望有一些我不知道的东西。

0 个答案:

没有答案