2

出于某种原因,我想在我的 asynctask 函数中获取用户的电话信息。

这是我的异步任务代码

package com.example.myfirstapp;

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.ByteArrayOutputStream;
import java.io.File;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.util.Calendar;

import org.apache.http.HttpResponse;
import org.apache.http.HttpStatus;
import org.apache.http.StatusLine;
import org.apache.http.client.HttpClient;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.impl.client.DefaultHttpClient;
import android.os.AsyncTask;
import android.util.DisplayMetrics;
import android.util.Log;
public class RequestTask extends AsyncTask<String, String, String>{
@Override

protected String doInBackground(String... uri) {
    ...my code
}



@Override
protected void onPostExecute(String result) {
    super.onPostExecute(result);
    //Do anything with response..
}

private  String getWeith(String url) {  
    DisplayMetrics dm = new DisplayMetrics();  
    getWindowManager().getDefaultDisplay().getMetrics(dm);  
    int width = dm.widthPixels;
    int height = dm.heightPixels;  
    String w=new String(""+width);
    String h=new String(""+height);
    url=url+"&23=w%3A"+w+"%20h%3A"+h+"%20d%3A"; 
    return url;
}  
}

错误消息显示“方法 getWindowManager() 未为 RequestTask 类型定义。”

但我已经尝试导入我所知道的所有内容......而且这个“getWeith()”函数可以在我的主要活动中工作。请帮助我,谢谢。

4

2 回答 2

3

错误原因

getWindowManager()是一个方法 on Activitynot onAsyncTask所以你会得到错误“方法 getWindowManager() is undefined for the type RequestTask.”。

如何解决?

为了在 AsyncTask 中获取此方法,请使用getSystemService()检索WindowManager然后执行的任务。

请参阅WindowManager 的此文档

于 2013-08-12T03:11:51.517 回答
3

您正在扩展AsyncTask,它没有方法getWindowManager()。您需要访问为其定义此方法的对象。

因此,尝试将您的活动传递给您的RequestTask对象,并调用getWindowManager()该活动。

于 2013-08-12T03:08:15.617 回答