如何在Asynctask中实现getWindowManager()?

时间:2013-08-12 02:59:10

标签: android android-asynctask window-managers

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

这是我的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()”函数可以用于我的mainactivity。 请帮助我,谢谢。

2 个答案:

答案 0 :(得分:3)

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

因此,请尝试将您的活动传递到RequestTask对象,并在该活动上调用getWindowManager()

答案 1 :(得分:3)

  

错误原因

getWindowManager()Activity上的方法而不是AsyncTask,因此您将收到错误“方法getWindowManager()未定义RequestTask类型。”。

  

如何解决?

为了在AsyncTask中使用getSystemService()来检索WindowManager,请执行此任务。

请参阅此documentation of WindowManager