相关疑难解决方法(0)

尝试从MediaStore读取时,Android KitKat securityException

java.lang.SecurityException:权限拒绝:从ProcessRecord打开提供程序com.android.providers.media.MediaDocumentsProvider {430b1748 29271:com.xxx/u0a88}(pid = 29271,uid = 10088)需要android.permission.MANAGE_DOCUMENTS或android. permission.MANAGE_DOCUMENTS

我已添加MANAGE_DOCUMENTSREAD_EXTERNAL_STORAGE权限,但我仍然收到此错误.违规代码:

 public static String getImagePath(HailoDriverApplication app, Uri uri) {
    Cursor cursor = null;
    if (uri == null) {
        return null;
    }
    try {
        cursor = app.getContentResolver().query(uri, new String[] {
            MediaStore.Images.Media.DATA
        }, null, null, null);
        int column_index = cursor.getColumnIndexOrThrow(MediaStore.Images.Media.DATA);
        if (cursor.moveToFirst()) {
            return cursor.getString(column_index);
        }
    } finally {
        if (cursor != null) {
            cursor.close();
        }
    }
    return null;
}
Run Code Online (Sandbox Code Playgroud)

正如所要求的清单片段:

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
package="com.x.x.x" >

<uses-sdk
    android:minSdkVersion="8"
    android:targetSdkVersion="16" /> …
Run Code Online (Sandbox Code Playgroud)

android android-4.4-kitkat

46
推荐指数
3
解决办法
3万
查看次数

在android webview中输入HTML文件(android 4.4,kitkat)

<input type="file">在android webview上使用了它.我得到了它的工作感谢这个线程: WebView中的文件上传

但接受的答案(或任何其他)不再适用于android 4.4 kitkat webview.

有谁知道如何解决它?

它也不适用于目标18.

我看了一些android 4.4源代码,似乎WebChromeClient没有改变,但我认为setWebChromeClient不再适用于kitkat webview,或者至少不是这个openFileChooser功能.

html android webview cordova android-4.4-kitkat

43
推荐指数
4
解决办法
8万
查看次数

使用KitKat存储访问框架后,打开Goog​​le云端硬盘文件内容URI

我正在使用Android 4.4的存储访问框架并打开文件选择器.

一切正常,除非从Google云端硬盘中选择文件,我只能弄清楚如何将其作为输入流打开,但我想获得一个java File对象.

返回的内容uri看起来像这样:content://com.google.android.apps.docs.storage/document/acc%3D4%3Bdoc%3D2279

其他类似的问题,但没有一个工作解决方案,允许我获取文件名,文件大小和内容:

我还研究了Paul Burke的FileChooser(https://github.com/iPaulPro/aFileChooser),这是该问题列表中最常见的问题.

如何从该内容获取文件?

我目前的解决方法是从输入流写出一个临时文件.

谢谢!

android google-drive-api storage-access-framework

23
推荐指数
1
解决办法
3万
查看次数

从android 5.0中的库中选择照片

我通过Android 5.0从图库中选择图像遇到问题.我的启动意图的代码是:

private void takePictureFromGallery() 
{
    Intent intent = new Intent(Intent.ACTION_PICK, MediaStore.Images.Media.INTERNAL_CONTENT_URI);
    startActivityForResult(intent, PICK_FROM_FILE);
}
Run Code Online (Sandbox Code Playgroud)

这里是请求代码PICK_FROM_FILE的onActivityResult()方法中调用的函数

private void handleGalleryResult(Intent data) 
{
    Uri selectedImage = data.getData();
    String[] filePathColumn = { MediaStore.Images.Media.DATA };

    Cursor cursor = getContentResolver().query(selectedImage, filePathColumn, null, null, null);
    cursor.moveToFirst();

    int columnIndex = cursor.getColumnIndex(filePathColumn[0]);
    // field declaration private String mTmpGalleryPicturePath;
    mTmpGalleryPicturePath = cursor.getString(columnIndex);
    cursor.close();
    // at this point mTmpGalleryPicturePath is null
    ...
}
Run Code Online (Sandbox Code Playgroud)

对于早于5.0的版本,此代码始终可以使用com.android.gallery应用程序.Google相册是Android 5.0上的默认图库应用程序.可能这个问题取决于应用程序还是新的Android操作系统分发问题?

编辑

我理解这个问题:Google相册自动浏览云服务器上备份图片的内容.事实上,如果我关闭每个互联网连接并且在选择图像之后尝试通过@maveň建议实践,则不会通过从InputStream解码Bitmap来获得结果.

所以在这一点上问题变成:android 5.0中有没有办法处理Intent.ACTION_PICK动作,以便系统浏览选择本地设备图库?

android photo-gallery

18
推荐指数
2
解决办法
2万
查看次数

Android:使用Storage Access Framework获取的URI中的意向选择器打开文件

一开始,用户可以使用新的存储访问框架选择文件(假设应用程序是API> 19):

https://developer.android.com/guide/topics/providers/document-provider.html

然后通过保存URI来保存对所选文件的引用,如下所示:

content://com.android.providers.downloads.documments/document/745
Run Code Online (Sandbox Code Playgroud)

(在这种情况下,文件来自默认下载dir`).

稍后,我想让用户打开这些文件(例如,他们的名字显示在UI列表中,用户选择一个).

我想用Android着名的意图选择器功能做到这一点,我所拥有的只是上面的URI对象......

谢谢,

android android-intent android-file storage-access-framework android-afilechooser

14
推荐指数
1
解决办法
7092
查看次数

如何从指向PDF文档的URI获取文件路径?

现在我的代码打开了默认的下载视图,它只显示我下载的PDF.我选择了一个PDF文件,我得到了这个:

内容://com.android.providers.downloads.documents/document/1171

我想得到这个:

/storage/emulated/0/Download/ch22Databases.pdf

我的问题是如何在Android中执行此操作?

我的代码:

public void PDF() {
    PDF = (Button) findViewById(R.id.FindPDFBtn);//Finds the button in design and put it into a button variable.
    PDF.setOnClickListener(//Listens for a button click.
        new View.OnClickListener() {//Creates a new click listener.
            @Override
            public void onClick(View v) {//does what ever code is in here when the button is clicked
                Intent intent = new Intent();
                intent.setType("application/pdf");
                intent.setAction(Intent.ACTION_GET_CONTENT);
                startActivityForResult(Intent.createChooser(intent, "Select a PDF "), SELECT_PDF);
            }
        }
    );
}

@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) …
Run Code Online (Sandbox Code Playgroud)

pdf android

14
推荐指数
2
解决办法
2万
查看次数

从图库Orientation中选择的Android图像始终为0:Exif TAG

当我从图库中选择一个图像以在Android应用程序中的我的imageview上设置它时,我发现它被反转180或270或90度.
所以为了检查/解决这个我使用的EXIF方向,但它总是给我"0".

我无法得到什么问题.

码:

Uri selectedImageUri = data.getData();

                    absolutePath = selectedImageUri.getPath();

                    exifMedia = new ExifInterface(absolutePath);
                    String exifOrint = exifMedia.getAttribute(ExifInterface.TAG_ORIENTATION);

                    exifOrientation = Integer.parseInt(exifOrint);

                    System.out.println("Orientation Tag is:"+exifOrientation);

                    /** Convert URI into byte */
                    ContentResolver cr = getBaseContext()
                    .getContentResolver();
                    InputStream inputStream = cr
                    .openInputStream(selectedImageUri);
                    Bitmap bitmap = BitmapFactory.decodeStream(inputStream);

                    rotatedBMP = getResizedBitmapImage(
                            bitmap, 100, 100,exifOrientation);

                    ByteArrayOutputStream stream = new ByteArrayOutputStream();
                    rotatedBMP.compress(Bitmap.CompressFormat.PNG, 100,
                            stream);
                    byteArray = stream.toByteArray();
                    mimProfileImageBrowse.setImageBitmap(rotatedBMP);
Run Code Online (Sandbox Code Playgroud)

方法:

public  Bitmap getResizedBitmapImage(Bitmap bm, int newHeight, int newWidth, int exifOrientation) {
        int …
Run Code Online (Sandbox Code Playgroud)

android exif bitmap

11
推荐指数
1
解决办法
2万
查看次数

下载管理器Android权限错误:写入外部存储

我编写了一个Android应用程序,使用DownloadManager将示例PDF文件下载到下载目录.这是代码:

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_vertretungsplan);
    Button dlbutton = (Button) findViewById(R.id.buttondownload);
    final Context c = this;
    dlbutton.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            DownloadManager.Request request = new DownloadManager.Request(Uri.parse(myurl));
            request.setTitle("Vertretungsplan");
            request.setDescription("wird heruntergeladen");
            request.allowScanningByMediaScanner();
            request.setNotificationVisibility(DownloadManager.Request.VISIBILITY_VISIBLE_NOTIFY_COMPLETED);
            String filename = URLUtil.guessFileName(myurl, null, MimeTypeMap.getFileExtensionFromUrl(myurl));
            request.setDestinationInExternalPublicDir(Environment.DIRECTORY_DOWNLOADS, filename);
            DownloadManager manager = (DownloadManager) c.getSystemService(Context.DOWNLOAD_SERVICE);
            manager.enqueue(request);
        }
    });
}
Run Code Online (Sandbox Code Playgroud)

现在,我尝试在我的Xperia Z3 Android 6.0上从Android Studio调试运行它.当我点击下载按钮时,会发生以下错误:

E/AndroidRuntime: FATAL EXCEPTION: main
              Process: com.example.markwitt.schul_app, PID: 29297
              java.lang.SecurityException: No permission to write to /storage/emulated/0/Download/hrpsampletable.pdf: Neither user 10047 nor current …
Run Code Online (Sandbox Code Playgroud)

xml android android-manifest android-permissions android-download-manager

11
推荐指数
2
解决办法
1万
查看次数

从相机胶卷React Native解码QR码图像

我正在尝试在我的应用程序中实现一个功能,用户可以从他们的相机胶卷中选择一张图片,并且应用程序将解码图像中的QR码.

我目前正在使用react-native-camera-roll-picker:https://github.com/jeanpan/react-native-camera-roll-picker 和react-native-qrcode-local-image:https:// github的.com/remobile /反应天然-QRCode的局部图像

问题是本地QR码图像库要求我传递本地路径,并且与react-native-camera-roll-picker提供的本机uri不兼容.我会使用另一个库来解码图像QR码但这个似乎是唯一适用于iOS和Android并从现有图像而不是从实际相机扫描的图像.

我也尝试实现react-native-fetch-blob以便在本地暂时保存相机胶卷图像,但这也给我带来了麻烦:https://github.com/wkh237/react-native-fetch-blob

这是我目前在一个函数中的尝试,我在react-native-camera-roll-picker的"回调"道具中调用(以前的尝试被注释掉了):

_pickedImage(array,currentImg) {
console.log(currentImg)
var path = RNFS.DocumentDirectoryPath + '/pickedqr';
let rnfbURI = RNFetchBlob.wrap(RNFetchBlob.fs.asset(currentImg.uri))
const Blob = RNFetchBlob.polyfill.Blob
Blob.build(rnfbURI, {type:'image/jpg'}).then((b) => {
  tmpBlob = b;
  RNFetchBlob.fs.readFile(tmpBlob, 'base64').then((data) => {
    console.log("Base64", data)
    QRDecoder.decode(`data:image/gif;base64,${data}`, (error, result)=>{
      console.log("Code", result)
      console.log("Error", error)
    });
  });
})
/*fullPath = currentImg.uri.replace("assets-library://", "cdvfile://localhost/assets-library/")
QRDecoder.decode(fullPath, (error, result)=>{
  console.log("Code", result)
  console.log("Error", error)
});*/
/*let blb = Blob.build( rnfbURI, { type: 'image/jpg'})
console.log(blb)*/
/*RNFetchBlob.fs.readFile(rnfbURI, 'base64').then((data) => { …
Run Code Online (Sandbox Code Playgroud)

javascript uri qr-code path react-native

11
推荐指数
1
解决办法
1855
查看次数

如何检查Android存储中是否存在已知的uri文件?

文件uri是已知的,例如

`file:///mnt/sdcard/Download/AppSearch_2213333_60.apk`
Run Code Online (Sandbox Code Playgroud)

我想检查这个文件是否可以在后台打开,怎么办?

java android

10
推荐指数
3
解决办法
2万
查看次数