Android 如何在我的PortParser类中创建上下文

Android 如何在我的PortParser类中创建上下文,android,database,android-asynctask,Android,Database,Android Asynctask,我有一个实现AsyncTask的类。该类下载端口csv文件并逐行导入mysqlite表。创建数据库的一部分是传递当前上下文。我在创建上下文时遇到了问题。通常getApplicationContext()会帮我做。但在这种情况下不起作用。我该怎么做?(课程尚未完全结束)另一件事是,我发现android studio为我的课程填充了完整的路径。这是在我创建文件夹并开始在文件夹中组织我的类之后开始发生的。我正在导入org.pctechtips.netdroid.*;但这不起作用 package org

我有一个实现AsyncTask的类。该类下载端口csv文件并逐行导入mysqlite表。创建数据库的一部分是传递当前上下文。我在创建上下文时遇到了问题。通常getApplicationContext()会帮我做。但在这种情况下不起作用。我该怎么做?(课程尚未完全结束)另一件事是,我发现android studio为我的课程填充了完整的路径。这是在我创建文件夹并开始在文件夹中组织我的类之后开始发生的。我正在导入org.pctechtips.netdroid.*;但这不起作用

package org.pctechtips.netdroid;

import android.os.AsyncTask;
import org.pctechtips.netdroid.*;
import org.pctechtips.netdroid.dbhelper.*;
import org.pctechtips.netdroid.dbhelper.*;
import android.content.Context;

import java.io.*;
import java.net.*;
import java.util.zip.*;

import javax.net.ssl.*;

/**
 * Java class to downloand and parse service-port csv file from iana.org
 */

public class PortParser {
    public static final String PORT_URL = "https://www.iana.org/assignments/service-names-port-numbers/service-names-port-numbers.csv";
    org.pctechtips.netdroid.dbhelper.DatabaseHelper dbHelper;
    Context context;



    public class DownloadPortFile extends AsyncTask<Void, Void, Void> {
        @Override
        protected void onPreExecute() {
            super.onPreExecute();
            context = (Context) org.pctechtips.netdroid.activity.MainActivity;
            dbHelper = new org.pctechtips.netdroid.dbhelper.DatabaseHelper(context);
        }

        @Override
        protected Void doInBackground(Void... voids) {
            BufferedReader in = null;
            HttpsURLConnection connection = null;

            try {
                URL url = new URL(PORT_URL);
                connection = (HttpsURLConnection) url.openConnection();
                connection.setRequestProperty("Accept-Encoding", "gzip");
                connection.connect();
                if (connection.getResponseCode() != HttpsURLConnection.HTTP_OK) {
                   // publishProgress;
                   //reuturn
                }

                in = new BufferedReader(new InputStreamReader(new GZIPInputStream(connection.getInputStream()), "UTF-8"));
                String line;

                while ((line = in.readLine()) != null) {
                    if (isCancelled()) {
                        return;
                    }

                    /*String[] data = parser.parseLine(line);
                    if (data == null) {
                        continue;
                    }

                    if (parser.saveLine(db, data) == -1) {
                        publishProgress("Failed to insert data into the database. Please run this operation again");

                        return;
                    }*/
                }

            } catch (Exception e) {
//                publishProgress(e.toString());
            } finally {
                try {
                    if (in != null) {
                        in.close();
                    }
                } catch (IOException ignored) {
                }

                if (connection != null) {
                    connection.disconnect();
                }
            }
            return null;
        }

        @Override
        protected void onProgressUpdate(Void... voids) {

        }

        @Override
        protected void onPostExecute(Void aVoid) {

        }
    }

}
package org.pctechtips.netdroid;
导入android.os.AsyncTask;
导入org.pctechtips.netdroid.*;
导入org.pctechtips.netdroid.dbhelper.*;
导入org.pctechtips.netdroid.dbhelper.*;
导入android.content.Context;
导入java.io.*;
导入java.net。*;
导入java.util.zip.*;
导入javax.net.ssl.*;
/**
*Java类下载并解析iana.org中的服务端口csv文件
*/
公共类端口分析器{
公共静态最终字符串端口\u URL=”https://www.iana.org/assignments/service-names-port-numbers/service-names-port-numbers.csv";
org.pctechtips.netdroid.dbhelper.DatabaseHelper dbhelper;
语境;
公共类DownloadPortFile扩展异步任务{
@凌驾
受保护的void onPreExecute(){
super.onPreExecute();
context=(context)org.pctechtips.netdroid.activity.MainActivity;
dbHelper=neworg.pctechtips.netdroid.dbHelper.DatabaseHelper(上下文);
}
@凌驾
受保护的空位背景(空位…空位){
BufferedReader in=null;
HttpsURLConnection连接=null;
试一试{
URL URL=新URL(端口URL);
connection=(HttpsURLConnection)url.openConnection();
setRequestProperty(“接受编码”、“gzip”);
connection.connect();
if(connection.getResponseCode()!=HttpsURLConnection.HTTP\u确定){
//出版进度;
//鲁图恩
}
in=new BufferedReader(新的InputStreamReader(新的GZIPInputStream(connection.getInputStream()),“UTF-8”);
弦线;
而((line=in.readLine())!=null){
如果(isCancelled()){
回来
}
/*String[]data=parser.parseLine(行);
如果(数据==null){
持续
}
if(parser.saveLine(db,data)=-1){
publishProgress(“无法将数据插入数据库,请重新运行此操作”);
回来
}*/
}
}捕获(例外e){
//出版进度(如toString());
}最后{
试一试{
if(in!=null){
in.close();
}
}捕获(忽略IOException){
}
if(连接!=null){
连接断开();
}
}
返回null;
}
@凌驾
受保护的void onProgressUpdate(void…void){
}
@凌驾
受保护的void onPostExecute(void避免){
}
}
}

您需要将上下文作为参数传递给此类的构造函数,并将其保存在那里。在应用程序上下文中传递。我建议您研究类和实例之间的差异,这里的代码显示您完全不了解Java及其对象模型