通过一个套接字对象,通过一个系绳,用一个新的.xml文件刷新android/res/value/.xml

通过一个套接字对象,通过一个系绳,用一个新的.xml文件刷新android/res/value/.xml,android,sockets,resources,usb,android-gridview,Android,Sockets,Resources,Usb,Android Gridview,问题分两部分: (1) 我有几个表示gridview状态的数组(textArray、colorArray等),我希望通过套接字连接到服务器,下载旧的gridViewArrays.xml并通过一些函数调用将其替换为位于android/res/value/中的新的gridViewArrays.xml来刷新它。到目前为止,我只发现资源不能动态更新,但由于xml没有编译,只有在apk中解析和推送,我不明白为什么这是不可能的。我正处于这一努力的早期阶段,但我想在我走上这条道路之前,确保这是可能的 (2)我

问题分两部分:

(1) 我有几个表示gridview状态的数组(textArray、colorArray等),我希望通过套接字连接到服务器,下载旧的gridViewArrays.xml并通过一些函数调用将其替换为位于android/res/value/中的新的gridViewArrays.xml来刷新它。到目前为止,我只发现资源不能动态更新,但由于xml没有编译,只有在apk中解析和推送,我不明白为什么这是不可能的。我正处于这一努力的早期阶段,但我想在我走上这条道路之前,确保这是可能的

(2)我还想建议如何使用Socket类通过TCP(通过无线连接)(不可无线)发送和接收信息到其他服务器上的C++应用程序。这方面有什么好的建议吗


提前谢谢

保存在
res/
文件夹下的资源是只读的,您不能更改它们。相反,您应该将修改后的xml文件保存到应用程序的本地存储中

关于第二个问题。关于如何使用套接字,有很多很好的教程,你只需要在谷歌上搜索就可以了

但是由于xml没有被编译,所以只能在apk中进行解析和推送

它们是经过编译的。XML资源优化为二进制形式。您只需解压缩一个.apk(重命名为.zip)并亲自查看即可

@(1):在应用程序目录(
getFilesDir()
)中创建一个文件,并将更新的数据保存在其中。现在,不再简单地从资源中加载值,而是检查该文件是否存在并从那里加载数据


@(2):系统应将USB连接映射到正常网络连接。任何java套接字教程都应该有效。

APK是数字签名的;通过更改资源来更改APK将使数字签名无效。只有
res/raw
下的xml文件才会复制到设备,对于所有其他位置,您无法访问文件本身,只能访问数组、视图、字符串、绘图表等。。他们定义的。很棒的信息!我想澄清几个问题。我应该澄清一下,我希望应用程序具有初始gridViewArray.xml数据。。在必须连接到服务器之前。所以这就是你的建议:1)在res之外创建一个名为..的文件夹。。“UploadXMLFolder/”2)将/gridViewArrays.xml文件放在那里。3) 使用GetFileDir()查找保存应用程序文件的目录(UploadXMLFolder/“将在哪里?)。4)在“刷新按钮”上单击事件,删除旧xml,通过套接字提取新xml,并将其保存到同一位置5)刷新网格视图。您可以从资源(例如,
res/values
)中最初加载数据-下载该文件的更新版本后(或保存要更改的数据的类似文件-不需要相同,因为您必须对其进行解析)您刷新了需要刷新的内容,但使用了下载文件中的数据。这里有一些限制,因为您无法直接使用资源-您需要一些抽象层来处理下载的资源文件切换。太好了!我想我可以尝试一下(将下载的文件加载到数组)并捕获(正在将res/value/.xml加载到数组中)。我会尝试一下,并让您知道它是如何运行的。谢谢您的帮助!