从《第一行代码:Android 第三版》中,复刻了ProviderTest程序,向DatabaseTest程序的ContentProvider写入数据的时候,遇到按下按钮直接闪退的问题。

查看Logcat,抛出异常:

  • java.lang.IllegalArgumentException: Unknown URL content:
  • Failed to find provider info for com.example.databasetest.provider

​​​​​​​​​​​​​​

仔细检查确定没有拼写错误,一番搜索,发现Android高版本收紧了权限以防止程序随便访问其他程序的文件,所以需要在Manifest中加入语句:

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="...">
    <uses-permission android:name="DatabaseProvider._READ_PERMISSION" />
    <uses-permission android:name="DatabaseProvider._WRITE_PERMISSION" />
    <queries>
        <package android:name="com.example.databasetest" />
    </queries>
    <application> ...
  • 获取provider的读写权限
  • 在queries标签中声明要访问的程序的包名

加上上述代码以后再点击按钮,就不再闪退。

本文主要介绍了 java . lan g. IllegalArgumentException : Illegal character in path at index 40解决方案,希望能对使用 Java 的同学们有所帮助。 1. 问题 描述 2. 问题 复现 3. 原因分析 4. 解决方案 4.1 方案一 4.2 方案二 5. 修复后
当使用如下代码调用安卓的自带文件选择 Intent intent = new Intent(Intent.ACTION_GET_ CONTENT ); intent.setType("video/*"); intent.addCategory(intent.CATEGORY_OPENABLE); startActivityForResult(Intent.createChooser(intent, "...
final String id = DocumentsContract.getDocumentId(uri); if (id != null && id.startsWith("raw:")) { return id.substrin...
Android 问题 件选择报错 java . lan g. IllegalArgumentException 参考文章 链接: [link](https://github.com/flutter/flutter/issues/21863).1、报错日志2、图片选择为下载目录文件时(最开始的获取方法为): 参考文章 链接: link. 1、报错日志 测试手机为8.0时 java . lan g.NumberFor...
final String id = DocumentsContract.getDocumentId(uri); if (id != null && id.startsWith("raw:")) { return id.substring(4);
异常: java . lan g. IllegalArgumentException Unknown URL content downloadsmy_downloads 原因:手机下载管理器没有打开 解决办法:在手机(华为)上选择:设置——>管理应用程序——>全部——>找到 下载管理器点击启动
文章目录1.检查URI 是否自己写错了2. provider 中的两个标签设置为true3.application标签中添加一项4.创建低版本的模拟器(<= 9,api<= 28) 在通过《 android 第一行代码》这本书 学习 时,在第七章自定义内容提供器时碰见了这样一个 问题 java . lan g. IllegalArgumentException : Unknown URL content ://com.example. database test. provider 找了很久不清楚是什么原因,后来偶然的换了个
OpenGL 是一个非常底层的画图接口,它所使用的缓冲区存储结构是和我们的 java 程序中不相同的。 Java 是大端字节序(Big Edian),而 OpenGL 所需要的数据是小端字节序(Little Edian)。所以,我们在将 Java 的缓冲区转化为 OpenGL 可用的缓冲区时需要作一些工作。 就ok了,否则在 android 1.6以下会报 java . lan g.IllegalArgumen
Error: java : java . lan g. IllegalArgumentException : MALFORMED 是 Java 中的一个异常错误,它表示传递给方法的参数格式不正确。具体来说,这个异常通常在使用不合法的参数调用方法时抛出。 这个异常的原因可能有很多,比如传递给方法的字符串格式不正确、传递给方法的数字超出了有效范围等等。当出现这个异常时, Java 程序会抛出该异常并停止执行。 为了解决这个 问题 ,你可以检查传递给方法的参数是否符合要求,确保参数的格式正确,并且在使用之前进行必要的验证。另外,你也可以查看异常的详细信息,以便更好地理解 问题 所在。