当前位置 : 主页 > 手机开发 > android >

android – 如果我的应用程序在API 8模拟器上运行,则Internet连接无法正常工作

来源:互联网 收集:自由互联 发布时间:2021-06-11
嗨,谢谢你的帮助, 我有一个应用程序,我在 Eclipse中针对API 17进行编译. 该应用程序执行一些简单的Internet连接. 现在,当我在使用API​​ 17的仿真器上进行测试时,一切正常. 如果我使用AP
嗨,谢谢你的帮助,
我有一个应用程序,我在 Eclipse中针对API 17进行编译.

该应用程序执行一些简单的Internet连接.

现在,当我在使用API​​ 17的仿真器上进行测试时,一切正常.

如果我使用API​​ 8对模拟器进行测试,那么App显然无法执行网络连接(adMob dos显示,HttpGet显然没有检索任何东西……)从我的应用程序(模拟器上的Web浏览器工作正常并正常加载).

并且adMob也不会加载到具有API 8或10的仿真器(它在API 17仿真器上).

非常感谢任何帮助!

这是我的主要活动:

public class QuotesActivity extends Activity implements MyInterface {

private String url2;

public static ArrayList<Stock> lt;
public static ArrayList<Stock> favQ;

public MyAdapter myAdap;

public Intent intent;
public ListView lv;
public FavManager fm;
private AdView adView;

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    setContentView(R.layout.search);
    AdRequest request = new AdRequest();

    // request.addTestDevice(AdRequest.TEST_EMULATOR);
    request.setGender(AdRequest.Gender.MALE);
    boolean tabletSize = getResources().getBoolean(R.bool.isTablet);
    if (tabletSize) {
        // Create the adView
        adView = new AdView(this, AdSize.SMART_BANNER, "a151388079e47d1");
    } else {
        // Create the adView
        adView = new AdView(this, AdSize.BANNER, "a151388079e47d1");
    }

    // Lookup your LinearLayout assuming it's been given
    // the attribute android:id="@+id/mainLayout"
    LinearLayout layout = (LinearLayout) findViewById(R.id.ad);

    // Add the adView to it
    layout.addView(adView);

    // Initiate a generic request to load it with an ad
    adView.loadAd(request);

    lt = new ArrayList<Stock>();
    favQ = new ArrayList<Stock>();
    fm = new FavManager(getApplicationContext());
    favQ.clear();
    favQ.addAll(fm.ritiraFav());
    PreferenceManager.setDefaultValues(this, R.xml.preferences, false);
    lt.clear();
    // ////////////
    try {
        InputStream in = getResources().openRawResource(R.raw.markets3);

        if (in != null) {
            InputStreamReader tmp = new InputStreamReader(in);
            BufferedReader reader = new BufferedReader(tmp);
            String str;
            String str1 = null;
            String str2 = null;
            boolean flag = true;
            while ((str = reader.readLine()) != null) {
                if (flag) {
                    str1 = str;
                    flag = false;
                } else {
                    str2 = str;
                    lt.add(new Stock(str1, str2, "0", "0"));
                    flag = true;
                }
            }
            in.close();
        }
    }

    catch (Throwable t) {
        // Log.e("", "Exception: " + t.toString());
    }
    // ///////
    Collections.sort(lt, new Comparator<Stock>() {
        public int compare(Stock s1, Stock s2) {
            return s1.nome.compareToIgnoreCase(s2.nome);
        }
    });
    lv = (ListView) findViewById(android.R.id.list);
    lv.setScrollbarFadingEnabled(false);
    Button favourites = (Button) findViewById(R.id.favoritesbtn);
    favourites.setOnClickListener(new View.OnClickListener() {

        @Override
        public void onClick(View v) {
            Intent intent = new Intent(QuotesActivity.this,
                    QuotesActivityFavourites.class);
            startActivity(intent);

        }
    });

    Button search = (Button) findViewById(R.id.googsearch);
    search.setOnClickListener(new View.OnClickListener() {

        @Override
        public void onClick(View v) {
            // Log.e("", "Chiamo onSearchRequested()");
            onSearchRequested();

        }
    });

    myAdap = new MyAdapter(lt, this, this);
    myAdap.l = lt;
    lv.setAdapter(myAdap);

    Button preference = (Button) findViewById(R.id.preferencebutton);
    preference.setOnClickListener(new View.OnClickListener() {

        @Override
        public void onClick(View v) {
            Intent intent = new Intent(QuotesActivity.this,
                    SettingsActivity.class);
            startActivity(intent);

        }
    });

    lv.setOnItemClickListener(new OnItemClickListener() {

        public void onItemClick(AdapterView<?> parent, View view,
                final int position, long id) {
            for (Stock item : favQ) {
                if (item.simbolo.equals(lt.get(position).simbolo)) {
                    AlertDialog.Builder builder = new AlertDialog.Builder(
                            QuotesActivity.this);
                    builder.setPositiveButton("Yes", new OnClickListener() {
                        public void onClick(DialogInterface arg0, int arg1) {
                            deleteFromFavorites(lt.get(position));
                        }
                    });
                    builder.setNegativeButton("No", new OnClickListener() {
                        public void onClick(DialogInterface arg0, int arg1) {
                            // Quotes.layoutSchermo(2);
                        }
                    });
                    builder.setMessage("Stock Already in Portfolio. Delete from it?");
                    builder.setTitle(lt.get(position).nome);

                    AlertDialog dialog = builder.create();
                    builder.show();
                    return;
                }

            }

            AlertDialog.Builder builder = new AlertDialog.Builder(
                    QuotesActivity.this);
            final int pos = position;

            builder.setPositiveButton("Yes", new OnClickListener() {
                public void onClick(DialogInterface arg0, int arg1) {
                    addToFavorites(lt.get(pos));
                }
            });
            builder.setNegativeButton("No", new OnClickListener() {
                public void onClick(DialogInterface arg0, int arg1) {
                    // Quotes.layoutSchermo(2);
                }
            });
            builder.setMessage("Add to Portfolio?");
            builder.setTitle(lt.get(position).nome);
            AlertDialog dialog = builder.create();
            builder.show();
            // dialog.show();
        }
    });

}

@Override
public void onResume() {
    super.onResume();
    RelativeLayout focuslayout = (RelativeLayout) findViewById(R.id.RequestFocusLayout);
    focuslayout.requestFocus();
    favQ.clear();
    favQ.addAll(fm.ritiraFav());
}

public void addToFavorites(final Stock toadd) {

    fm.addFav(toadd);
    favQ.clear();
    favQ.addAll(fm.ritiraFav());
    return;
}

public void deleteFromFavorites(Stock todel) {
    fm.removeFav(todel);
    favQ.clear();
    favQ.addAll(fm.ritiraFav());
    return;
}

public void UpdateLine(Integer position) {
    UpdateTask up = new UpdateTask();
    up.execute(position, null, null);
}

public class UpdateTask extends AsyncTask<Integer, Void, Void> {

    @Override
    protected void onProgressUpdate(Void... progress) {
    }

    @Override
    protected void onPostExecute(Void result) {
        myAdap.l = lt;
        myAdap.notifyDataSetChanged();
    }

    @Override
    protected Void doInBackground(Integer... position) {
        DefaultHttpClient client = new DefaultHttpClient();
        String srt = "";
        // ///////////API SEGRETO DI GOOGLE ORIGINARIO
        // String url
        // =getString(R.string.dettaglio1).concat("'"+fav.get(i).simbolo+"'").concat(getString(R.string.dettaglio2));
        // ///////////API ALTERNATIVO
        String url = getString(R.string.urlaternativo).concat(
                lt.get(position[0]).simbolo);

        HttpGet getMethod = new HttpGet(url);
        try {
            ResponseHandler<String> responseHandler = new BasicResponseHandler();
            srt = client.execute(getMethod, responseHandler);
            int inizio = srt.indexOf("<last data=\"");
            int fine = srt.indexOf("\"/>", inizio + 12);
            lt.get(position[0]).setPrezzo(srt.substring(inizio + 12, fine));

            inizio = srt.indexOf("<perc_change data=\"");
            fine = srt.indexOf("\"/>", inizio + 19);
            lt.get(position[0]).setCambiamento(
                    srt.substring(inizio + 19, fine));

        } catch (Throwable t) {
            // Log.e("ERRORE INTERNET", "ERRORE INTERNET", t);
        }

        return null;
    }
}

@Override
public void onDestroy() {
    if (adView != null) {
        adView.destroy();
    }
    super.onDestroy();
}
}

这是我的清单:

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.quotes" >

<uses-sdk
    android:minSdkVersion="8"
    android:targetSdkVersion="17" />

<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />

<application android:debuggable="true" >
    <activity
        android:name=".QuotesActivity"
        android:configChanges="keyboard|keyboardHidden|orientation|screenLayout|uiMode|screenSize|smallestScreenSize"
        android:icon="@drawable/ic_launcher"
        android:label="Markets in your pocket !" >
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />

            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>

        <meta-data
            android:name="android.app.default_searchable"
            android:value=".QuotesActivitySearch" />
    </activity>
    <activity
        android:name=".QuotesActivitySearch"
        android:configChanges="keyboard|keyboardHidden|orientation|screenLayout|uiMode|screenSize|smallestScreenSize"
        android:icon="@drawable/ic_launcher"
        android:label="Markets in your pocket !" >
        <intent-filter>
            <action android:name="android.intent.action.SEARCH" />
        </intent-filter>

        <meta-data
            android:name="android.app.searchable"
            android:resource="@xml/searchable" />
    </activity>
    <activity
        android:name=".QuotesActivityFavourites"
        android:configChanges="keyboard|keyboardHidden|orientation|screenLayout|uiMode|screenSize|smallestScreenSize"
        android:icon="@drawable/ic_launcher"
        android:label="Markets in your pocket !" >
    </activity>
    <activity
        android:name=".SettingsActivity"
        android:configChanges="keyboard|keyboardHidden|orientation|screenLayout|uiMode|screenSize|smallestScreenSize"
        android:label="Settings" >
    </activity>
    <activity
        android:name="com.google.ads.AdActivity"
        android:configChanges="keyboard|keyboardHidden|orientation|screenLayout|uiMode|screenSize|smallestScreenSize" />
</application>

这是我的LogCat:

03-15 14:16:05.554: D/dalvikvm(1466): GC_EXPLICIT freed 909K, 43% free 4716K/8135K,    external 1170K/1682K, paused 7ms
03-15 14:16:07.185: E/ActivityThread(1466): Failed to find provider info for    com.google.plus.platform
03-15 14:16:07.185: D/szipinf(1466): Initializing inflate state
03-15 14:16:07.185: D/szipinf(1466): Initializing zlib to inflate
03-15 14:16:07.214: I/Ads(1466): To get test ads on this device, call    adRequest.addTestDevice("6EA1DCF3A944D7B947BC304C7A9E933D");
03-15 14:16:07.268: D/dalvikvm(1466): GC_CONCURRENT freed 395K, 36% free 5315K/8263K,    external 1121K/1603K, paused 1ms+0ms
03-15 14:16:07.290: I/Ads(1466): adRequestUrlHtml: <html><head><script     src="http://media.admob.com/sdk-core-v40.js"></script>   <script>AFMA_getSdkConstants();AFMA_buildAdURL({"preqs":3,"session_id":"1145804483122245265 2","seq_num":"4","slotname":"a151388079e47d1","u_w":320,"msid":"com.marketsinyourpocket","cap":"m,a","js":"afma-sdk-a-    v6.3.0","bas_off":0,"net":"ed","app_name":"1.android.com.marketsinyourpocket","hl":"en","gnt":3,"cust_gender":1,"carrier":"310260","u_audio":1,"u_sd":1.5,"ms":"Qqlgt9Kwv7BZOnio6PfLHi5mVs5ayp77VGIIyJ3Y7sojTNwIZfi0LHn2PZquoJTqpJx8NtOvTzGKWYlbxvU8fOjXkArCoqoQnGrLKZ57CTZOOt2WWrL9k8pyN4P-nBwIvuZDvijR0reHDyhcqwAoMtPdOeUV_cwIe3jk-6BMm_IgvGs8EKWVZESeqrSuExAStQMMsUYcC6p-XkB8KegxEX4FS2Q2CibdMk3CMKoAzfF58Sxp6DvRObm662IVwImzFWGdQ22UVx4ViQqz_ensdg1bXk5jgpyBOpV0jMFHgoEv5SwD5zpoeJfo-a1f0d5GR35f2bDAb3iXucuGB723lA","isu":"6EA1DCF3A944D7B947BC304C7A9E933D","format":"320x50_mb","oar":0,"ad_pos":{"height":0,"visible":0,"y":0,"x":0,"width":0},"u_h":533,"pt":1,"bas_on":0,"ptime":143736});</script></head><body></body></html>
03-15 14:16:07.358: W/webcore(1466): Can't get the viewWidth after the first layout
03-15 14:16:07.448: D/dalvikvm(1466): GC_CONCURRENT freed 338K, 33% free 6141K/9031K,  external 1121K/1603K, paused 1ms+0ms
03-15 14:16:13.494: V/URL I USE(1466): http://www.google.com/ig/api?stock=SHY
03-15 14:16:33.614: E/EXCEPTION I GET(1466): java.net.UnknownHostException: www.google.com

编辑编辑编辑

甚至在API 10英特尔加速仿真器上尝试过,没有更好的运气

代理设置正确,

数据传输已启用

……我有点绝望了!

编辑编辑

发布整个活动

编辑编辑

该应用程序在使用API​​ 10的真实电话上正常工作(不在我的模拟器上使用API​​ 10)!

我抓到的错误是

03-15 13:14:43.299: E/Exception(1318): java.net.UnknownHostException: www.google.com

我确实使用Google REST服务

谢谢你的帮助!

我很确定这是代理设置问题.尝试显式设置代理(从Android系统获取值).

在默认的HttpClient上,这将是:

HttpClient client = new DefaultHttpClient();

//Get the default settings from APN
  String proxyHost = android.net.Proxy.getDefaultHost();
  int proxyPort = android.net.Proxy.getDefaultPort();
//Set Proxy params of client, if they are not the standard
    if (proxyHost != null && proxyPort > 0) {
        HttpHost proxy = new HttpHost(proxyHost, proxyPort);
        client.getParams().setParameter(ConnRoutePNames.DEFAULT_PROXY, proxy);
    }
HttpGet request = new HttpGet("http://www.google.com");
网友评论