Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/350.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
Java 我的应用程序中的共享首选项不会';不要在启动屏幕上工作_Java_Android - Fatal编程技术网

Java 我的应用程序中的共享首选项不会';不要在启动屏幕上工作

Java 我的应用程序中的共享首选项不会';不要在启动屏幕上工作,java,android,Java,Android,我试图做的是绕过每次下载VPN列表的文件,因为它需要太多的时间来加载。这是我的密码 正如你们可以从这里看到的代码库url下载服务器列表,但每次应用程序打开它时,都会尝试一次又一次地下载文件,我只想从本地存储调用它,而不是从应用程序调用它 我使用这个应用程序的源代码你能帮我吗 更新 package com.baztro.ultravpn.activity; import android.support.v7.app.AppCompatActivity; import android.os.Bun

我试图做的是绕过每次下载VPN列表的文件,因为它需要太多的时间来加载。这是我的密码

正如你们可以从这里看到的代码库url下载服务器列表,但每次应用程序打开它时,都会尝试一次又一次地下载文件,我只想从本地存储调用它,而不是从应用程序调用它

我使用这个应用程序的源代码你能帮我吗

更新

package com.baztro.ultravpn.activity;

import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;

import com.baztro.ultravpn.R;

public class MainSplashActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main_splash);
    }
}
如何绕过下载文件并将其包含到应用程序中

mySplashActivity.java

package com.baztro.ultravpn.activity;

import android.content.DialogInterface;
import android.content.Intent;
import android.content.SharedPreferences;
import android.os.Handler;
import android.os.Message;
import android.os.Bundle;

import android.support.v7.app.AlertDialog;
import android.view.View;
import android.widget.TextView;

import com.baztro.ultravpn.util.NetworkState;
import com.androidnetworking.AndroidNetworking;
import com.androidnetworking.common.Priority;
import com.androidnetworking.error.ANError;
import com.androidnetworking.interfaces.DownloadListener;
import com.androidnetworking.interfaces.DownloadProgressListener;
import com.daimajia.numberprogressbar.NumberProgressBar;

import com.baztro.ultravpn.R;
import com.baztro.ultravpn.model.Server;
import com.baztro.ultravpn.util.PropertiesService;
import com.baztro.ultravpn.util.Stopwatch;

import java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException;
import java.io.InterruptedIOException;
import java.security.PrivateKey;
import java.util.concurrent.TimeUnit;

import okhttp3.OkHttpClient;

public class SplashActivity extends BaseActivity {

    private NumberProgressBar progressBar;
    private TextView commentsText;
    private static boolean loadStatus = false;
    private Handler updateHandler;

    private final int LOAD_ERROR = 0;
    private final int DOWNLOAD_PROGRESS = 1;
    private final int PARSE_PROGRESS = 2;
    private final int LOADING_SUCCESS = 3;
    private final int SWITCH_TO_RESULT = 4;
    private final String BASE_URL = "http://www.vpngate.net/api/iphone/";
    private final String BASE_FILE_NAME = "vpngate.csv";
   private SharedPreferences sp;
   private SharedPreferences.Editor editor ;


    private boolean premiumStage = true;

    private int percentDownload = 0;
    private Stopwatch stopwatch;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_splash);
        sp = getSharedPreferences("splash-detail", MODE_PRIVATE);
        editor = sp.edit();

//        if(sp.getBoolean("downloadComplete" == true))
//        {
//
//            Intent intent = new Intent(this, MainSplashActivity.class);
//            startActivity(intent);
//        }


            if (NetworkState.isOnline()) {
                if (loadStatus) {
                    Intent myIntent = new Intent(this, UserActivity.class);
                    startActivity(myIntent);
                    finish();
                } else {
                    loadStatus = true;

                }
            } else {
                AlertDialog.Builder builder = new AlertDialog.Builder(this);
                builder.setTitle(getString(R.string.network_error))
                        .setMessage(getString(R.string.network_error_message))
                        .setNegativeButton(getString(R.string.ok),
                                new DialogInterface.OnClickListener() {
                                    public void onClick(DialogInterface dialog, int id) {
                                        dialog.cancel();
                                        onBackPressed();
                                    }
                                });
                AlertDialog alert = builder.create();
                alert.show();
            }



            progressBar = (NumberProgressBar)findViewById(R.id.number_progress_bar);
            commentsText = (TextView)findViewById(R.id.commentsText);

            if (getIntent().getBooleanExtra("firstPremiumLoad", false))
                ((TextView)findViewById(R.id.loaderPremiumText)).setVisibility(View.VISIBLE);

            progressBar.setMax(100);

            updateHandler = new Handler(new Handler.Callback() {
                @Override
                public boolean handleMessage(Message msg) {
                    switch (msg.arg1) {
                        case LOAD_ERROR: {
                            commentsText.setText(msg.arg2);
                            progressBar.setProgress(100);
                        } break;
                        case DOWNLOAD_PROGRESS: {
                            commentsText.setText(R.string.downloading_csv_text);
                            progressBar.setProgress(msg.arg2);

                        } break;
                        case PARSE_PROGRESS: {
                            commentsText.setText(R.string.parsing_csv_text);
                            progressBar.setProgress(msg.arg2);
                        } break;
                        case LOADING_SUCCESS: {
                            commentsText.setText(R.string.successfully_loaded);
                            progressBar.setProgress(100);
                            Message end = new Message();
                            end.arg1 = SWITCH_TO_RESULT;
                            updateHandler.sendMessageDelayed(end,500);
                        } break;
                        case SWITCH_TO_RESULT: {

                            if (PropertiesService.getConnectOnStart()) {
                                Server randomServer = getRandomServer();
                                if (randomServer != null) {
                                    newConnecting(randomServer, true, true);
                                } else {
                                    startActivity(new Intent(SplashActivity.this, UserActivity.class));
                                }
                            } else {
                                startActivity(new Intent(SplashActivity.this, UserActivity.class));
                            }
                        }
                    }
                    return true;
                }
            });
            progressBar.setProgress(0);


        }

    @Override
    protected void onResume() {
        super.onResume();
        downloadCSVFile(BASE_URL, BASE_FILE_NAME);
    }

    @Override
    protected boolean useHomeButton() {
        return false;
    }

    @Override
    protected boolean useMenu() {
        return false;
    }

    private void downloadCSVFile(String url, String fileName) {
        stopwatch = new Stopwatch();

        OkHttpClient okHttpClient = new OkHttpClient().newBuilder()
                .connectTimeout(60, TimeUnit.SECONDS)
                .readTimeout(60, TimeUnit.SECONDS)
                .writeTimeout(60, TimeUnit.SECONDS)
                .build();

        AndroidNetworking.download(url, getCacheDir().getPath(), fileName)
                .setTag("downloadCSV")
                .setPriority(Priority.MEDIUM)
                .setOkHttpClient(okHttpClient)
                .build()
                .setDownloadProgressListener(new DownloadProgressListener() {
                    @Override
                    public void onProgress(long bytesDownloaded, long totalBytes) {
                        if(totalBytes <= 0) {
                            // when we dont know the file size, assume it is 1200000 bytes :)
                            totalBytes = 1200000;
                        }


                            percentDownload = (int)((100 * bytesDownloaded) / totalBytes);


                        Message msg = new Message();
                        msg.arg1 = DOWNLOAD_PROGRESS;
                        msg.arg2 = percentDownload;
                        updateHandler.sendMessage(msg);
                    }
                })
                .startDownload(new DownloadListener() {
                    @Override
                    public void onDownloadComplete() {
                        editor.putBoolean("downloadComplete", true);
                        editor.apply();
                        parseCSVFile(BASE_FILE_NAME);


                    }
                    @Override
                    public void onError(ANError error) {
                        editor.putBoolean("downloadCompleteNo", false);
                        editor.apply();
                        Message msg = new Message();
                        msg.arg1 = LOAD_ERROR;
                        msg.arg2 = R.string.network_error;
                        updateHandler.sendMessage(msg);

                    }
                });
    }

    private void parseCSVFile(String fileName) {
        BufferedReader reader = null;
        try {
            reader = new BufferedReader(new FileReader(getCacheDir().getPath().concat("/").concat(fileName)));
        } catch (IOException e) {
            e.printStackTrace();
            Message msg = new Message();
            msg.arg1 = LOAD_ERROR;
            msg.arg2 = R.string.csv_file_error;
            updateHandler.sendMessage(msg);
        }
        if (reader != null) {
            try {
                int startLine = 2;
                int type = 0;


                    dbHelper.clearTable();


                int counter = 0;
                String line = null;
                while ((line = reader.readLine()) != null) {
                    if (counter >= startLine) {
                        dbHelper.putLine(line, type);
                    }
                    counter++;

                }

                    Message end = new Message();
                    end.arg1 = LOADING_SUCCESS;
                    updateHandler.sendMessageDelayed(end,200);


            } catch (Exception e) {
                e.printStackTrace();
                Message msg = new Message();
                msg.arg1 = LOAD_ERROR;
                msg.arg2 = R.string.csv_file_error_parsing;
                updateHandler.sendMessage(msg);
            }
        }
    }
}

看起来首先需要修复onDownloadComplete方法

public void onDownloadComplete() {
    editor.putBoolean("downloadComplete", false);
    editor.apply();
    parseCSVFile(BASE_FILE_NAME);}


看起来首先需要修复onDownloadComplete方法

public void onDownloadComplete() {
    editor.putBoolean("downloadComplete", false);
    editor.apply();
    parseCSVFile(BASE_FILE_NAME);}

onDownloadComplete()方法不会将任何值放入共享首选项中。 用以下函数替换您的函数:

public void onDownloadComplete(){
editor.putBoolean(“downloadComplete”,true);
editor.apply();
parseCSVFile(基本文件名);
}
此外,为了避免多次下载文件,还需要通过检查共享首选项中是否存在密钥来检查文件是否已下载。将onResume()方法更改为以下内容:

protectedvoid onResume(){
super.onResume();
如果(!sp.contains(“downloadComplete”)){
下载CSVFile(基本URL、基本文件名);
}
}
如果需要,请以其他方式检索文件。

onDownloadComplete()方法不会将任何值放入共享首选项中。 用以下函数替换您的函数:

public void onDownloadComplete(){
editor.putBoolean(“downloadComplete”,true);
editor.apply();
parseCSVFile(基本文件名);
}
此外,为了避免多次下载文件,还需要通过检查共享首选项中是否存在密钥来检查文件是否已下载。将onResume()方法更改为以下内容:

protectedvoid onResume(){
super.onResume();
如果(!sp.contains(“downloadComplete”)){
下载CSVFile(基本URL、基本文件名);
}
}

如果需要,请以其他方式检索该文件。

实际上我测试了true或false,但没有任何效果,它仍然下载该文件。just diff.is loading bar不会显示百分比。实际上我测试了true或false,但没有任何效果,它仍然下载该文件。just diff.is loading bar不会显示百分比。如果语句错误,请参阅。您有:
if(sp.getBoolean(“downloadComplete”)==true))
相反,您应该有:
if(sp.getBoolean(“downloadComplete”)==true)
if语句错误。你有:
if(sp.getBoolean(“downloadComplete”)==true))
你应该有:
if(sp.getBoolean(“downloadComplete”)==true)
我试过你的代码,但它就像屏幕卡在点上一样,但仍然在后台下载文件并在下载应用程序后向前运行。更改你的注释if条件:
if(sp.getBoolean(“downloadComplete”==true))
if(sp.getBoolean(“downloadComplete”)==true)
错误:无法将接口SharedReferences中的方法getBoolean应用于给定类型;必需:String,boolean found:String原因:实际参数列表和形式参数列表长度不同@Animeski尝试了您的代码,但它就像屏幕卡在点上一样,但仍在后台下载文件,并在下载应用程序后向前运行。更改您的commented if条件从:
if(sp.getBoolean(“downloadComplete”)==true))
if(sp.getBoolean(“downloadComplete”)==true)
错误:接口SharedReferences中的方法getBoolean无法应用于给定类型;必需:字符串,找到布尔值:字符串原因:实际参数列表和形式参数列表的长度不同@animeshk