Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/188.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android通过开发者控制台自动更新资源文件_Android_Auto Update_Google Play_Resource Files - Fatal编程技术网

Android通过开发者控制台自动更新资源文件

Android通过开发者控制台自动更新资源文件,android,auto-update,google-play,resource-files,Android,Auto Update,Google Play,Resource Files,我的Android应用程序在资源文件夹中有原始文件,我从中检索对我的应用程序至关重要的数据 这些资源文件需要不时更新(如果不是经常更新的话) 有没有办法通过谷歌更新机制(开发者控制台或其他工具)来实现这一点 我知道谷歌的新政策不允许通过非Playstore来源更新应用程序。 大多数时候,我只需要更新这个特定的文件,并且大部分代码保持不变(除非有bug) 我觉得让用户下载整个.apk文件只是为了更新单个原始文件是多余的 不,这是不可能的,你不应该设计这样的应用程序 我可以看到你想要什么,你想从服

我的Android应用程序在
资源文件夹
中有原始文件,我从中检索对我的应用程序至关重要的数据

这些资源文件需要不时更新(如果不是经常更新的话)

有没有办法通过谷歌更新机制(开发者控制台或其他工具)来实现这一点

我知道谷歌的新政策不允许通过非Playstore来源更新应用程序。

大多数时候,我只需要更新这个特定的文件,并且大部分代码保持不变(除非有bug)


我觉得让用户下载整个.apk文件只是为了更新单个原始文件是多余的

不,这是不可能的,你不应该设计这样的应用程序

我可以看到你想要什么,你想从服务器下载一些东西到客户端而不阻塞用户界面

使用某些服务器端语言构建api,如果仅更新了remote中的文件,则返回所需的文件(您可以在客户端和服务器之间进行日期时间比较,如果不同,则下载)

您可以尝试
asynctask
进行api调用,返回所需文件并将其保存在资源文件夹中

下面是一个异步任务示例

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() {}
    }
}
导入android.app.Activity;
导入android.os.AsyncTask;
导入android.os.Bundle;
导入android.provider.Settings.System;
导入android.view.view;
导入android.widget.Button;
导入android.widget.TextView;
导入android.view.view.OnClickListener;
公共类AsyncTaskActivity扩展活动实现OnClickListener{
按钮btn;
@凌驾
创建时的公共void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
btn=(按钮)findViewById(R.id.button1);
//因为我们实现了OnClickListener,所以我们只需要传递“this”
//(容易多了)
btn.setOnClickListener(此);
}
公共void onClick(视图){
//检测“单击”的视图
开关(view.getId()){
案例R.id.button1:
新建LongOperation()。执行(“”);
打破
}
}
私有类LongOperation扩展了异步任务{
@凌驾
受保护的字符串doInBackground(字符串…参数){
对于(int i=0;i<5;i++){
试一试{
睡眠(1000);
}捕捉(中断异常e){
Thread.interrupted();
}
}
返回“已执行”;
}
@凌驾
受保护的void onPostExecute(字符串结果){
TextView txt=(TextView)findViewById(R.id.output);
txt.setText(“已执行”);//txt.setText(结果);
//可能需要更改传递的返回字符串的“已执行”
//进入onPostExecute(),但这取决于您
}
@凌驾
受保护的void onPreExecute(){}
}
}

我希望这可以解决您的问题

您可以将文件托管在web服务器上,并将其下载到应用程序的专用目录或外部存储。什么是“应用程序的专用目录”???有没有一种方法可以在编写应用程序时使用私有目录文件?您可以使用“Context.getFilesDir()”获取指向应用程序私有位置的路径。我可以从服务器下载新文件,并使用Context.getFilesDir()将其放在适当的位置。这回答了我的问题。谢谢没有。我知道如何在Android中使用线程。通过服务器更新是其中一种方法,但我如何在我的应用程序中使用该特定文件。在开发过程中,我将这样的文件放在resource->raw->file.f中。一旦部署了应用程序,这个资源文件夹将在哪里?@SreecharanDesabattula您不能写入resources目录正如我指出的,我需要某种方法从应用程序更新一个文件,并且该文件应该是应用程序的私有文件。不一定是资源目录。谢谢