【问题标题】:Can't connect to internet on real phone (Android) but works on emulator无法在真实手机(Android)上连接到互联网,但可以在模拟器上运行
【发布时间】:2012-03-13 14:52:04
【问题描述】:

我的应用在模拟器上运行良好,但在真正的 Android 手机(索尼爱立信 xperia、索尼爱立信 xperia mini)上时无法连接到互联网。手机有使用 EDGE/GPRS 的有效互联网连接。

课程如下:

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.URL;

import org.apache.http.client.ClientProtocolException;
import org.apache.http.client.HttpClient;
import org.apache.http.client.ResponseHandler;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.impl.client.BasicResponseHandler;
import org.apache.http.impl.client.DefaultHttpClient;

public class get_string {


    public String response_p (String url)
    {


            HttpClient client = new DefaultHttpClient();
            HttpGet request = new HttpGet(url.toString());

            ResponseHandler<String> responseHandler = new BasicResponseHandler();
            String response_str = null;
            try {
                response_str = client.execute(request, responseHandler);
            } catch (ClientProtocolException e) {

                response_str="NOT";
            } catch (IOException e) {

                response_str="NOT";
            }

            return response_str;


    }

    public String response (String str)
    {
        String res="";
        try {
            URL url = new URL(str);
            HttpURLConnection con = (HttpURLConnection) url
                .openConnection();
            res=readStream(con.getInputStream());
            } catch (Exception e) {
            res="NOT";
        }



         return res;



    }

    private String readStream(InputStream in) throws IOException {
        BufferedReader reader = new BufferedReader(new InputStreamReader(in));
        String line = "",res="";
        while ((line = reader.readLine()) != null) {
            res+=line;
        }

        return res;
    }




}

response()response_p() 的结果相同。

这是清单文件:

        </application>
       <uses-permission android:name="android.permission.INTERNET"></uses-permission>
       <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
       <uses-permission android:name="android.permission.ACCESS_MOCK_LOCATION" /> 
       <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
   </manifest>

我该如何解决这个问题?

【问题讨论】:

  • 您是如何通过电话访问互联网的?通过 WiFi 还是 GPRS?
  • 你知道它到底哪里出了问题吗?您所有的失败案例都返回字符串“NOT”。为什么不记录或返回具体原因?
  • 所以您的 SIM 卡有 GPRS 套餐?你有正确的 GPRS 设置吗?做一件事,在您的手机浏览器上打开 www.stackoverflow.com,这意味着您的 GPRS 正在工作,而问题在于您的代码
  • @Android 我可以浏览任何网站、谷歌地图和所有其他基于互联网的服务,但只有我的应用无法连接到互联网,尽管它在模拟器上运行良好。

标签: android


【解决方案1】:

问题可能是特定于 SIM 卡或特定于设备。使用其他 SIM 卡或其他设备尝试该应用程序。这将更好地了解问题以及想要否决我的答案的人我仍然没有获得评论员徽章,所以我写下我的评论作为答案。也可能是设备未获取您的 URL。

【讨论】:

  • 为了支持这个答案,我在平板电脑上遇到了同样的问题,但在任何其他设备上都没有,所以它可能是特定于设备或 SIM 卡的,正如@Dinesh 所提到的。所以试试其他设备。
【解决方案2】:

我将 response() 和 response_p() 都移到了我的默认活动类中,它起作用了! 我仍然不知道为什么,但这两个功能在模拟器和真机上都能完美运行。

【讨论】:

    猜你喜欢
    • 2018-06-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-06-26
    • 1970-01-01
    • 1970-01-01
    • 2011-11-07
    • 2011-07-29
    相关资源
    最近更新 更多