因此,我有一個活動讓我的服務器讀取一個文本文件。該文本文件包含一行包含包名稱的文本。我的目標是獲取軟件包名稱,然後使用軟件包名稱獲取服務器上txt文件中指定軟件包的versionCode。 這裏是獲取來自服務器的txt文件類:如何從服務器上的txt文件返回軟件包名稱
public class getter extends Activity {
Activity context;
TextView txtview;
ProgressDialog pd;
protected void onCreate(Bundle savedInstanceState) {
//TODO Auto-generated method stub
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_get);
context=this;
}
public void onStart(){
super.onStart();
BackTask bt=new BackTask();
bt.execute("http://1.2.3.4/test.txt");
}
//background process to download the file from internet
public static class BackTask extends AsyncTask<String,Integer,Void>{
String text="";
protected void onPreExecute(){
super.onPreExecute();
//display progress dialog
}
protected Void doInBackground(String...params){
URL url;
try {
//create url object to point to the file location on internet
url = new URL(params[0]);
//make a request to server
HttpURLConnection con=(HttpURLConnection)url.openConnection();
//get InputStream instance
InputStream is=con.getInputStream();
//create BufferedReader object
BufferedReader br=new BufferedReader(new InputStreamReader(is));
String line;
//read content of the file line by line
while((line=br.readLine())!=null){
text+=line;
}
br.close();
}catch (Exception e) {
e.printStackTrace();
//close dialog if error occurs
}
return null;
}
protected void onPostExecute(Void result){
String packageName = text;
}
}
public String getPackageName(Context mContext) {
if (mContext != null) {
BackTask bt=new BackTask();
bt.execute("http://1.2.3.4/test.txt");
}
return "";
}
}
,這是應該從服務器上指定的包拿到的versionCode:
public static int getinstVersionCode(Context mContext) {
if (mContext != null) {
try {
getter.BackTask bt=new getter.BackTask();
bt.execute("http://1.2.3.4/test.txt");
return mContext.getPackageManager().getPackageInfo(String.valueOf(new getter.BackTask().execute("http://1.2.3.4/test.txt")), 0).versionCode;
} catch (PackageManager.NameNotFoundException ignored) {
}
}
return 0;
}
爲什麼沒有這個回報服務器上軟件包名稱的versionCode?
我認爲錯誤在於下面的函數,但我不確定。
返回mContext.getPackageManager()getPackageInfo(將String.valueOf(新getter.BackTask()執行( 「http://1.2.3.4/test.txt」)),0).versionCode。
你有什麼異常嗎?你能否詳細描述一下發生的事情。另外,getter.BackTask()。execute返回null,它應該返回從服務器獲得的文本。它應該返回一個字符串,並且不會像你指定的那樣無效 – user3362334
你有兩次'new getter.BackTask()。execute(「http://1.2.3.4/test.txt」))''。爲什麼?看起來不太好。此外,您無法以這種方式從AsyncTask獲得結果。你應該在onPostExecute中處理doInBackground的結果。只有在那裏! – greenapps