当前位置: 首页 > 知识库问答 >
问题:

查找配置的根文件失败

孙斌
2023-03-14

我得到以下错误:

05-29 01:08:02.924: E/AndroidRuntime(5447): FATAL EXCEPTION: IntentService[com.sample.muzeitest.MuzeiClass]
05-29 01:08:02.924: E/AndroidRuntime(5447): java.lang.IllegalArgumentException: Failed to find configured root that contains /data/data/com.sample.muzeitest/files/wallpaper0.png
05-29 01:08:02.924: E/AndroidRuntime(5447):     at android.support.v4.content.FileProvider$SimplePathStrategy.getUriForFile(FileProvider.java:678)
05-29 01:08:02.924: E/AndroidRuntime(5447):     at android.support.v4.content.FileProvider.getUriForFile(FileProvider.java:377)
05-29 01:08:02.924: E/AndroidRuntime(5447):     at com.sample.muzeitest.MuzeiClass.muzeiContentUri(MuzeiClass.java:58)
05-29 01:08:02.924: E/AndroidRuntime(5447):     at com.sample.muzeitest.MuzeiClass.onUpdate(MuzeiClass.java:37)
05-29 01:08:02.924: E/AndroidRuntime(5447):     at com.google.android.apps.muzei.api.MuzeiArtSource.processAndDispatchSubscriberAdded(MuzeiArtSource.java:614)
05-29 01:08:02.924: E/AndroidRuntime(5447):     at com.google.android.apps.muzei.api.MuzeiArtSource.processSubscribe(MuzeiArtSource.java:581)
05-29 01:08:02.924: E/AndroidRuntime(5447):     at com.google.android.apps.muzei.api.MuzeiArtSource.onHandleIntent(MuzeiArtSource.java:539)
05-29 01:08:02.924: E/AndroidRuntime(5447):     at android.app.IntentService$ServiceHandler.handleMessage(IntentService.java:65)
05-29 01:08:02.924: E/AndroidRuntime(5447):     at android.os.Handler.dispatchMessage(Handler.java:99)
05-29 01:08:02.924: E/AndroidRuntime(5447):     at android.os.Looper.loop(Looper.java:137)
05-29 01:08:02.924: E/AndroidRuntime(5447):     at android.os.HandlerThread.run(HandlerThread.java:61)

当我尝试在muzei应用程序中使用我的文件提供程序时。

我有一个活动(将一些位图从可绘制文件夹添加到/data/data/APP-SPACE-HERE/files/)和一个扩展MuzeiArtSource的类:

public class MuzeiClass extends MuzeiArtSource {


Uri imgUri;


public MuzeiClass() {
    super(MuzeiClass.class.getName());

}


@Override
public void onCreate() {
    super.onCreate();
   // setUserCommands(BUILTIN_COMMAND_ID_NEXT_ARTWORK); // manual switch image

}

@Override
protected void onUpdate(int arg0) {


       imgUri = muzeiContentUri();  


    publishArtwork(new Artwork.Builder()
           .imageUri( imgUri )
           .title("Example image")
           .byline("Unknown person, c. 1980")
//             .viewIntent(new Intent(Intent.ACTION_VIEW,
//                     Uri.parse("http://example")))
           .build());       

}


public Uri muzeiContentUri()    {

    File newFile = new File(getFilesDir(), "wallpaper0.png");
    Uri contentUri = FileProvider.getUriForFile(getApplicationContext(), "com.sample.muzeitest.fileprovider", newFile);


    return contentUri;
}



}

清单文件包含FileProviderservice标记的provider

        <service
        android:name="com.sample.muzeitest.MuzeiClass"
        android:label="@string/title_activity_muzei_service"
        android:description="@string/muzei_description"
        android:icon="@drawable/ic_source">
         <intent-filter>
            <action android:name="com.google.android.apps.muzei.api.MuzeiArtSource" />
        </intent-filter>
        <meta-data android:name="color" android:value="#fa0" />
    </service>     


       <provider
            android:name="android.support.v4.content.FileProvider"
            android:authorities="com.sample.muzeitest.fileprovider"
            android:exported="false"
            android:grantUriPermissions="true">
            <meta-data
                android:name="android.support.FILE_PROVIDER_PATHS"
                android:resource="@xml/muzei_wallpapers" />
      </provider>  

我也有这个xml文件在res/文件夹:

<?xml version="1.0" encoding="utf-8"?>
<paths xmlns:android="http://schemas.android.com/apk/res/android">
    <files-path name="my_images" path="files/"  />
</paths>

我昨天问了这个问题,但问题是关于uri名称的。我使用adb shell进入指定路径/data/data/com。样品muzeitest/files/wallpaper0。png,我可以确认文件是否已保存。阅读一些关于SO的类似问题,但没有任何帮助。


共有1个答案

邓鸿信
2023-03-14
/data/data/com.sample.muzeitest/files/wallpaper0.png 

意味着文件路径和没有子目录。

然后是xml定义

<files-path name="my_images" path=""  />

文件路径#路径文件/xxxxx/

请检查一下。

 类似资料:
  • 我使用Liberty Profile v8.5.5.5(WebSphere Application Server8.5.5.5/wlp-1.0.8.cl50520150221-0034)IBMJ9 VM,版本pxa6470sr1-20120330_01(SR1)(en_US) 我已经安装了jndi功能。。。但无论我做什么,我都无法进行简单的JNDI查找。 在我server.xml 我的代码...(

  • 我似乎不能在本地工作,即使同样的WAR在远程服务器上也能工作。当我在本地访问我的应用程序时,我得到了“没有找到上下文根”的错误。自由档案版本是8.5.5.5。 以下是相关文件: 服务器.xml 留言.log ibm-web-bnd.xml ibm-web-ext.xml

  • 问题内容: 我在Ubuntu的Aws实例上运行Jenkins Master并将Mac笔记本电脑创建为slave,当我在Mac loptop生成中使用Xcode运行成功时,但是当我从Jenkins触发它时,它给出了。 Ps: 我已经尝试阅读以前的文章,但是其中大多数都让Jenkins在MAC上运行,而且xcode在同一台服务器上运行,这不是我的情况。 因为我能够在xcode中运行项目,所以我认为我的

  • 我试图在没有aws概要文件设置的远程无服务器服务器上运行python代码。查看boto3文档后,我会说: 我将获得一个新的boto3名称配置文件,但我得到一个错误: secret_class=get_secret(名称、地区、概况) 文件“/metaflow/func\u get\u aws\u secrets.py”,第45行,在get\u secret session=boto3.sessio

  • 最近,我决定学习如何使用log4j2记录器。我下载了所需的jar文件,创建了库,xml编译文件,并尝试使用它。不幸的是,我在console(Eclipse)中得到了这样的语句: 这是我的测试类代码: 和我的xml配置文件: 我还尝试使用不带标记的xml,以及包规范和各种文件夹/包目录,但没有帮助。现在我的文件直接位于Eclipse的project文件夹中。

  • 问题内容: 在node.js中,我可以列出具有通配符匹配的文件吗? 在fs文档中找不到通配符匹配的信息。 问题答案: Node核心未涵盖此范围。您可以检查该模块的内容。npmjs.org还是查找各种模块的绝佳资源。 用法