我的Android应用程序在resource folder
中有原始文件,我从中检索对我的应用程序至关重要的数据。
如果不经常,这些资源文件需要不时更新。
有没有办法通过Google更新机制(开发者控制台或任何其他工具)实现这一目标?
我知道Google的新政策不允许通过非Playstore来源更新应用。 Google's new policy
大多数情况下,我只需更新此特定文件,大部分代码保持不变(除非有错误)。
我觉得让用户下载整个.apk文件只是为了更新单个原始文件是多余的。
答案 0 :(得分:2)
不可能,你不应该设计这样的应用程序。
我可以看到你想要的东西,你想从服务器下载一些东西而不阻止UI。
使用某种服务器端语言构建api,如果只更新了远程文件,则返回所需的文件(您可以在客户端和服务器之间进行日期时间比较,如果不同,则下载它)
您可以尝试asynctask
进行api调用,返回您想要的文件并将其保存在资源文件夹中。
以下是asynctask示例
import android.app.Activity;
import android.os.AsyncTask;
import android.os.Bundle;
import android.provider.Settings.System;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;
import android.view.View.OnClickListener;
public class AsyncTaskActivity extends Activity implements OnClickListener {
Button btn;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
btn = (Button) findViewById(R.id.button1);
// because we implement OnClickListener we only have to pass "this"
// (much easier)
btn.setOnClickListener(this);
}
public void onClick(View view) {
// detect the view that was "clicked"
switch (view.getId()) {
case R.id.button1:
new LongOperation().execute("");
break;
}
}
private class LongOperation extends AsyncTask<String, Void, String> {
@Override
protected String doInBackground(String... params) {
for (int i = 0; i < 5; i++) {
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
Thread.interrupted();
}
}
return "Executed";
}
@Override
protected void onPostExecute(String result) {
TextView txt = (TextView) findViewById(R.id.output);
txt.setText("Executed"); // txt.setText(result);
// might want to change "executed" for the returned string passed
// into onPostExecute() but that is upto you
}
@Override
protected void onPreExecute() {}
}
}
我希望这能解决你的问题