【问题标题】:How to load a resource file from url?如何从 url 加载资源文件?
【发布时间】:2021-03-06 16:30:09
【问题描述】:
  • 我有一个应用程序,它使用这一行从 res/raw 文件加载 configuration.xml 文件:

    例子:

        Resources resources = context.getResources();
        InputStream is = resources.openRawResource(ResourceIds.raw.configuration);
    
  • 我想将 configuration.xml 文件放入服务器文件夹(http url),然后我可以像这样加载它:

    例子:

        Resources resources = context.getResources();
        InputStream is = resources.openRawResource(http://example.com/folder/configuration.xml);
    

你能帮我解决这个问题吗?!

【问题讨论】:

  • 这样不行。还有这样的想法吗?
  • 抱歉,您无法从 URL 加载资源。使用 OkHttp 或其他一些 HTTP 客户端加载由该 URL 标识的内容。
  • 你能给我一个简单的例子吗??

标签: android http android-resources android-developer-api


【解决方案1】:

因此,如果我理解您的意思,您需要一个输入流来从 Web 服务器读取您的 XML。看起来像这样:

InputStream is = new URL("http://example.com/folder/configuration.xml").openConnection().getInputStream();

但是,还有更多内容,您不能在主线程上执行此操作(请参阅 NetworkOnMainThreadException),并且您必须准备好没有互联网连接或下载缓慢。所以我不知道你使用这个配置做什么,但例如你可能必须有默认设置并在屏幕上显示“请稍候”消息。

【讨论】:

  • 您好,谢谢您的回复。我实际上正在为 Android TV 定制主屏幕。当我将静态 configuration.xml 文件放在 res/raw 文件夹下时,我可以进行我想要的修改,但是编译环境花费了太多时间。所以我决定把这个配置文件放在服务器下,这样我就可以直接在上面修改,然后customization.apk从中读取这个xml文件并做我想要的修改
  • 好吧,我从来没有这样做过,但是我想你会很好地使用上面的简单代码。请记住,您仍然需要在单独的线程上执行此操作,可能使用 new Thread(new Runnable { ... }).start()
  • 它总是会在主线程上失败。 Android 不允许您在主线程上执行任何网络操作,因为它可能会阻塞用户界面并“导致糟糕的用户体验”等。
  • Thnx 很多伙计,你的建议解决了我的问题 :D :D
猜你喜欢
  • 2013-03-22
  • 1970-01-01
  • 2010-11-13
  • 1970-01-01
  • 2015-10-29
  • 2015-11-16
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多