Android 如何从url加载资源文件?

Android 如何从url加载资源文件?,android,http,android-resources,android-developer-api,Android,Http,Android Resources,Android Developer Api,我有一个应用程序,它使用以下行从res/raw文件加载configuration.xml文件: 例如: Resources resources = context.getResources(); InputStream is = resources.openRawResource(ResourceIds.raw.configuration); Resources resources = context.getResources(); InputStream is

我有一个应用程序,它使用以下行从res/raw文件加载configuration.xml文件:

例如:

    Resources resources = context.getResources();
    InputStream is = resources.openRawResource(ResourceIds.raw.configuration);
    Resources resources = context.getResources();
    InputStream is = resources.openRawResource(http://example.com/folder/configuration.xml);
  • 我想将configuration.xml文件放入一个服务器文件夹(http url),然后可以按如下方式加载它:

    例如:

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

  • 你能帮我吗

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

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

    然而,还有更多的问题,您不能在主线程上执行此操作(请参阅NetworkOnMainThreadException),您必须准备好没有internet连接或下载速度较慢。因此,我不知道您使用此配置的目的是什么,但例如,您可能必须具有默认值,并在屏幕上显示“请稍候”消息。

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

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

    然而,还有更多的问题,您不能在主线程上执行此操作(请参阅NetworkOnMainThreadException),您必须准备好没有internet连接或下载速度较慢。因此,我不知道您使用此配置的目的是什么,但例如,您可能必须使用默认设置,并在屏幕上显示“请稍候”消息。

    这不会发生。还有这样的想法吗?对不起,您不能从URL加载资源。使用OkHttp或其他HTTP客户端加载该URL标识的内容。你能给我一个简单的例子吗?这个例子不适用。还有这样的想法吗?对不起,您不能从URL加载资源。使用OkHttp或其他HTTP客户端加载该URL标识的内容。您能给我提供一个简单的示例吗?您好,thnx供您回复。我正在为Android TV定制主屏幕。当我将statically configuration.xml文件放在res/raw文件夹下时,我可以进行所需的修改,但编译环境花费了太多时间。所以我决定把这个配置文件放在一个服务器下,这样我就可以直接在上面修改,然后customization.apk从中读取这个xml文件并进行我想要的修改。我从来没有这样做过,但是我想你会对上面的简单代码满意的。请记住,您仍然需要在单独的线程上执行此操作,可能需要使用
    new-thread(new-Runnable{…})。start()
    在主线程上总是会失败。Android不允许你在主线程上做任何联网的事情,因为它可能会阻塞用户界面和“导致糟糕的用户体验”等等。Thnx很多伙计,你的建议解决了我的问题:D:DHello,Thnx谢谢你的回复。我正在为Android TV定制主屏幕。当我将statically configuration.xml文件放在res/raw文件夹下时,我可以进行所需的修改,但编译环境花费了太多时间。所以我决定把这个配置文件放在一个服务器下,这样我就可以直接在上面修改,然后customization.apk从中读取这个xml文件并进行我想要的修改。我从来没有这样做过,但是我想你会对上面的简单代码满意的。请记住,您仍然需要在单独的线程上执行此操作,可能需要使用
    new-thread(new-Runnable{…})。start()
    在主线程上总是会失败。Android不允许你在主线程上做任何联网的事情,因为它可能会阻塞用户界面和“导致糟糕的用户体验”等等。Thnx很多老兄,你的建议解决了我的问题:D:D