相关疑难解决方法(0)

以编程方式在Android 7/api24中安装apk

我想让我的应用程序自动安装apk.这适用于api <24.但对于24岁,它失败了.Android实现了额外的安全性:

对于定位到Android 7.0的应用,Android框架会强制执行StrictMode API策略,该策略禁止在应用外部公开file:// URI.如果包含文件URI的intent离开了您的应用程序,则该应用程序将失败并出现FileUriExposedException异常.

所以我尝试了这个:

    Uri myuri;
    if (Build.VERSION.SDK_INT < Build.VERSION_CODES.N){
        myuri = Uri.parse("file://"+outapk);
    } else {
        File o = new File(outapk);
        myuri = FileProvider.getUriForFile(con, con.getApplicationContext().getPackageName() + ".provider", o);
    }
    Intent promptInstall = new Intent(Intent.ACTION_VIEW).setDataAndType(myuri,"application/vnd.android.package-archive");
    con.startActivity(promptInstall);
Run Code Online (Sandbox Code Playgroud)

但得到一个致命的例外:

com.android.packageinstaller "Caused by: java.lang.SecurityException: Permission Denial: opening provider android.support.v4.content.FileProvider from ProcessRecord{b42ee8a 6826:com.android.packageinstaller/u0a15} (pid=6826, uid=10015) that is not exported from uid 10066". 
Run Code Online (Sandbox Code Playgroud)

我的清单中有export = true.

问题似乎是packageinstaller无法使用content:// uri.

有没有办法允许应用程序以编程方式安装带有api24的apk?

uri securityexception apk packageinstaller android-7.0-nougat

13
推荐指数
2
解决办法
6373
查看次数

无法在Android模拟器中写入SD卡

我在AndroidManifest.xml中添加了这一行:

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
Run Code Online (Sandbox Code Playgroud)

但是,当我运行代码写入SD卡时,我收到此错误:

02-19 13:24:46.760: E/CameraTest(598): /mnt/sdcard/image.jpg: open failed: EACCES (Permission denied)
Run Code Online (Sandbox Code Playgroud)

我该如何解决这个问题?

编辑:我正在使用添加了SDCard的Android模拟器.

编辑2:我知道现在的问题是:我已经调用了函数Environment.getExternalStorageState(),我被"删除"了.任何人都知道如何解决这个问题并建立状态MEDIA_MOUNTED

谢谢!

permissions android android-emulator android-sdcard

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

我打开失败:当我尝试在Android 5.1中将数据写入SD卡时出现EACCES(Permission denied)错误,为什么?

我需要将一些数据保存到SD卡,我已经将权限添加到AndroidManifest.xml文件中,当我在Android 4.12 mobile中测试它时,我可以得到正确的结果.

但是当我在Android 5.1移动设备中测试它时,我打开失败:EACCES(Permission denied)错误,为什么?

顺便说一句,我已经阅读了Android 6.0开放失败:EACCES(Permission denied)Exception'开放失败:EACCES(Permission denied)'在Android上,但现在我的手机是SamSung Android 5.1

 private void ActionUploadFiles(Map<String, String> files,IHTTPSession session,String uploadFolder){

        try{
            Set<String> keys = files.keySet();

            for (String key:keys) {
                String location = files.get(key);
                File source = new File(location);

                String filename= session.getParms().get(key);
                filename=FilenameUtils.getName(filename);

                File target = new File(uploadFolder,filename);

                FileUtils.copyFile(source,target);
            }
        }
        catch (Exception e) {
            Utility.LogError("Upload Error: "+ e.getMessage());
        }
    }
Run Code Online (Sandbox Code Playgroud)

AndroidManifest.xml中

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="info.dodata.wifi">

    <uses-permission android:name="android.permission.INTERNET"/>
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
    <uses-permission android:name="android.permission.ACCESS_WIFI_STATE"></uses-permission>

    <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" …
Run Code Online (Sandbox Code Playgroud)

android

10
推荐指数
1
解决办法
1033
查看次数

在Android中将文件写入外部存储器失败

正如标题所指出的那样,我在将文件写入外部存储器时遇到了麻烦.我的调试设备是Nexus 5.问题是,我能够从设备中完美地读取文件(我一直在尝试使用下载文件夹中的文件),但无法编写它们.我知道我必须在设备未连接到计算机时执行此操作.但它也不起作用.

事实上,我已经尝试在写入之前阅读SD卡的状态(当然,这不起作用).当设备连接到我的PC时,状态显示为"已安装".我比较了状态Environment.MEDIA_MOUNTED_READ_ONLY,Environment.MEDIA_MOUNTED没有任何成功.我的设备不属于这些状态.

你必须知道的一件事是我的手机没有外部SD卡,因为它是一个内部SD卡.这导致我的设备具有用于外部存储的"/ storage/emulated/0/..."目录.

我还必须指出,我在Android Manifest中实现了以下标记:

<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/> 
<uses-permission android:name="ANDROID.PERMISSION.WRITE_EXTERNAL_STORAGE"/>
Run Code Online (Sandbox Code Playgroud)

我对可能发生的事情没有任何线索.另一件可能有用的事情是我尝试使用winrar管理文件(适用于Android),并且我已经能够使用连接到我的PC的设备删除文件,并且无需连接.所以我不知道该怎么办.

我用来编写文件的代码如下.请记住,它应该读取一个图像文件(它做),将其转换为字符串,将其转换回图像,然后将其保存到下载文件夹:

 File file = new File(Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOWNLOADS).getAbsolutePath() + "/base_image.jpg");
 // Reading a Image file from file system
 FileInputStream imageInFile = new FileInputStream(file);
 byte imageData[] = new byte[(int) file.length()];
 imageInFile.read(imageData);

 // Converting Image byte array into Base64 String
 String imageDataString = encodeImage(imageData);

 // Converting a Base64 String into Image byte array
 byte[] imageByteArray = decodeImage(imageDataString);

 File newFile = new File(Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOWNLOADS), "converted_image.jpg");

 //Write a image byte array …
Run Code Online (Sandbox Code Playgroud)

java android android-external-storage nexus-5

9
推荐指数
1
解决办法
3498
查看次数

BitmapFactory:无法解码流:java.io.FileNotFoundException

我有一个关于BitMapFactory.decodeFile的问题.

在我的应用程序中,我希望用户能够从他/她的设备中选择图像或拍照.然后必须在ImageView中显示

这是代码片段:

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]);
                    String picturePath = cursor.getString(columnIndex);
                    cursor.close();
                    MyImage image = new MyImage();
                    image.setTitle("Test");
                    image.setDescription("test choose a photo from gallery and add it to " + "list view");
                    image.setDatetime(System.currentTimeMillis());
                    image.setPath(picturePath); 
Run Code Online (Sandbox Code Playgroud)

我得到了这个例外:

BitmapFactory: Unable to decode stream: java.io.FileNotFoundException: /storage/emulated/0/WhatsApp/Media/WhatsApp Images/IMG-20170302-WA0012.jpg: open failed: EACCES (Permission denied)
Run Code Online (Sandbox Code Playgroud)

怎么解决它.请帮帮我.谢谢你...

android filenotfoundexception bitmapfactory

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

Android 在外部 SD 卡上写入文件 for android 5+

我无法将文件写入外部 SD 卡。我收到错误消息 EAcess denied。我在互联网上搜索了很多,发现从 Android 4.4 + android 的存储访问框架 (SAF) 写入文件是必需的。

但我正在使用一些能够在 SD 卡上写入(创建/删除/重命名)文件的 android 应用程序。他们没有使用 SAF。

因此,请帮助我了解如何在不使用 SAF 框架的情况下执行此操作。

谢谢

file-io android android-sdcard android-file

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