2012-04-05 94 views
0

我正在編寫一個應用程序,它在登錄屏幕後立即顯示Google Map。 構建目標設定爲2.3和我的設備上運行:我的Android應用程序不會在2個設備上運行,但在仿真器上運行

1)三星Galaxy ACE(2.3.4) 2)Motorolla的Xoom(3.1)

我嘗試在Android模擬器我的應用程序,它運行精細。登錄和地圖顯示。

當我在電腦上通過USB連接兩臺設備並選擇它們運行應用程序時(注意:選擇時在構建目標旁邊有一個橙色警告標誌),登錄屏幕顯示得很好,當我點擊「登錄「應用程序在Motorolla上崩潰並凍結一段時間,然後在我的Galaxy Ace上不做任何事情。

請注意,他們都可以連接到互聯網。

的logcat的設備在運行通過USB連接的應用程序:

1)三星Galaxy王牌

04-06 00:24:21.599: I/InputReader(162): dispatchTouch::touch event's action is 0 
04-06 00:24:21.599: I/InputDispatcher(162): Delivering touch to current input target: action: 0, channel '40796920 com.cylbs.android/com.cylbs.android.MainActivity (server)' 
04-06 00:24:21.699: I/InputReader(162): dispatchTouch::touch event's action is 1 
04-06 00:24:21.699: I/InputDispatcher(162): Delivering touch to current input target: action: 1, channel '40796920 com.cylbs.android/com.cylbs.android.MainActivity (server)' 
04-06 00:24:27.709: W/PowerManagerService(162): Timer 0x3->0x3|0x1 
04-06 00:24:28.559: D/BatteryService(162): update start 
04-06 00:24:28.569: D/BatteryService(162): update start 
04-06 00:24:28.579: D/BatteryService(162): update start 

2)Motorolla Xoom的

04-06 00:27:13.490: D/AndroidRuntime(3163): Shutting down VM 
04-06 00:27:13.490: W/dalvikvm(3163): threadid=1: thread exiting with uncaught exception (group=0x40154760) 
04-06 00:27:13.510: E/AndroidRuntime(3163): FATAL EXCEPTION: main 
04-06 00:27:13.510: E/AndroidRuntime(3163): android.os.NetworkOnMainThreadException 
04-06 00:27:13.510: E/AndroidRuntime(3163):  at android.os.StrictMode$AndroidBlockGuardPolicy.onNetwork(StrictMode.java:1077) 
04-06 00:27:13.510: E/AndroidRuntime(3163):  at dalvik.system.BlockGuard$WrappedNetworkSystem.connect(BlockGuard.java:368) 
04-06 00:27:13.510: E/AndroidRuntime(3163):  at org.apache.harmony.luni.net.PlainSocketImpl.connect(PlainSocketImpl.java:208) 
04-06 00:27:13.510: E/AndroidRuntime(3163):  at org.apache.harmony.luni.net.PlainSocketImpl.connect(PlainSocketImpl.java:431) 
04-06 00:27:13.510: E/AndroidRuntime(3163):  at java.net.Socket.connect(Socket.java:901) 
04-06 00:27:13.510: E/AndroidRuntime(3163):  at org.apache.harmony.luni.internal.net.www.protocol.http.HttpConnection.<init>(HttpConnection.java:75) 
04-06 00:27:13.510: E/AndroidRuntime(3163):  at org.apache.harmony.luni.internal.net.www.protocol.http.HttpConnection.<init>(HttpConnection.java:48) 
04-06 00:27:13.510: E/AndroidRuntime(3163):  at org.apache.harmony.luni.internal.net.www.protocol.http.HttpConnection$Address.connect(HttpConnection.java:304) 
04-06 00:27:13.510: E/AndroidRuntime(3163):  at org.apache.harmony.luni.internal.net.www.protocol.http.HttpConnectionPool.get(HttpConnectionPool.java:89) 
04-06 00:27:13.510: E/AndroidRuntime(3163):  at org.apache.harmony.luni.internal.net.www.protocol.http.HttpURLConnectionImpl.getHttpConnection(HttpURLConnectionImpl.java:292) 
04-06 00:27:13.510: E/AndroidRuntime(3163):  at org.apache.harmony.luni.internal.net.www.protocol.http.HttpURLConnectionImpl.makeConnection(HttpURLConnectionImpl.java:274) 
04-06 00:27:13.510: E/AndroidRuntime(3163):  at org.apache.harmony.luni.internal.net.www.protocol.http.HttpURLConnectionImpl.connect(HttpURLConnectionImpl.java:217) 
04-06 00:27:13.510: E/AndroidRuntime(3163):  at org.apache.harmony.luni.internal.net.www.protocol.http.HttpURLConnectionImpl.getOutputStream(HttpURLConnectionImpl.java:624) 
04-06 00:27:13.510: E/AndroidRuntime(3163):  at com.cylbs.android.MainActivity.tryLogin(MainActivity.java:65) 
04-06 00:27:13.510: E/AndroidRuntime(3163):  at com.cylbs.android.MainActivity$1.onClick(MainActivity.java:41) 
04-06 00:27:13.510: E/AndroidRuntime(3163):  at android.view.View.performClick(View.java:3110) 
04-06 00:27:13.510: E/AndroidRuntime(3163):  at android.view.View$PerformClick.run(View.java:11928) 
04-06 00:27:13.510: E/AndroidRuntime(3163):  at android.os.Handler.handleCallback(Handler.java:587) 
04-06 00:27:13.510: E/AndroidRuntime(3163):  at android.os.Handler.dispatchMessage(Handler.java:92) 
04-06 00:27:13.510: E/AndroidRuntime(3163):  at android.os.Looper.loop(Looper.java:132) 
04-06 00:27:13.510: E/AndroidRuntime(3163):  at android.app.ActivityThread.main(ActivityThread.java:4025) 
04-06 00:27:13.510: E/AndroidRuntime(3163):  at java.lang.reflect.Method.invokeNative(Native Method) 
04-06 00:27:13.510: E/AndroidRuntime(3163):  at java.lang.reflect.Method.invoke(Method.java:491) 
04-06 00:27:13.510: E/AndroidRuntime(3163):  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:841) 
04-06 00:27:13.510: E/AndroidRuntime(3163):  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:599) 
04-06 00:27:13.510: E/AndroidRuntime(3163):  at dalvik.system.NativeStart.main(Native Method) 

這是我在MainActivity碼這只是登錄和地圖出現的主頁活動:

MainActivity:

package com.cylbs.android; 

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

import android.app.Activity; 
import android.content.Intent; 
import android.os.Bundle; 
import android.view.View; 
import android.widget.Button; 
import android.widget.EditText; 
import android.widget.TextView; 
import android.widget.Toast; 

public class MainActivity extends Activity { 
    private Button login; 
    private EditText username, password; 

    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.main); 

     login = (Button) findViewById(R.id.logIn); 
     username = (EditText) findViewById(R.id.username); 
     password = (EditText) findViewById(R.id.password); 


     login.setOnClickListener(new View.OnClickListener() { 

      @Override 
      public void onClick(View v) { 
       // TODO Auto-generated method stub 
       String mUsername = username.getText().toString(); 
       String mPassword = password.getText().toString(); 

       tryLogin(mUsername, mPassword); 

      } 
     }); 
    } 

    public boolean tryLogin(String mUsername, String mPassword) 
    {   
     HttpURLConnection connection; 
     OutputStreamWriter request = null; 

      URL url = null; 
      String response = null;   
      String parameters = "username="+mUsername+"&password="+mPassword; 
      final TextView result = (TextView) findViewById(R.id.result); 

      try 
      { 
       url = new URL("http://10.0.2.2/database_test/index.php"); 
       connection = (HttpURLConnection) url.openConnection(); 
       connection.setDoOutput(true); 
       connection.setRequestProperty("Content-Type", "application/x-www-form-urlencoded"); 
       connection.setRequestMethod("POST");  

       request = new OutputStreamWriter(connection.getOutputStream()); 
       request.write(parameters); 
       request.flush(); 
       request.close();    
       String line = "";    
       InputStreamReader isr = new InputStreamReader(connection.getInputStream()); 
       BufferedReader reader = new BufferedReader(isr); 
       StringBuilder sb = new StringBuilder(); 
       while ((line = reader.readLine()) != null) 
       { 
        sb.append(line); 
       } 
       // Response from server after login process will be stored in response variable.     
       response = sb.toString(); 
       // You can perform UI operations here 
       Toast.makeText(this,"."+ response +".", 0).show();   


       if (response.equals("Success")) 
       { 
        Session obj = new Session(); 
        obj.setUsername(mUsername); 

        Intent myIntent = new Intent(MainActivity.this, Home.class); 
        startActivity(myIntent); 
        result.setText("Login successful"); 
       } 
       else 
       { 
        result.setText("Login fail. Please try again"); 
       } 
       isr.close(); 
       reader.close(); 
      } 
      catch(IOException e) 
      { 
       // Error 
      } 
      return true; 
    } 

} 

和家庭活動(延伸MapActivity)

package com.cylbs.android; 

import com.google.android.maps.GeoPoint; 
import com.google.android.maps.MapActivity; 
import com.google.android.maps.MapController; 
import com.google.android.maps.MapView; 
import android.content.Intent; 
import android.os.Bundle; 
import android.view.View; 
import android.widget.Button; 

public class Home extends MapActivity { 

    MapController mControl; 
    GeoPoint geoP; 
    MapView mapV; 


    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.home); 

     mapV = (MapView) findViewById(R.id.mapView); 
     mapV.displayZoomControls(true); 
     mapV.setBuiltInZoomControls(true); 

     double lat = 40.8; 
     double longi = -96.666; 

     geoP = new GeoPoint((int) (lat *1E6), (int) (longi *1E6)); 

     mControl = mapV.getController(); 
     mControl.animateTo(geoP); 
     mControl.setZoom(13); 


     Button emergencies = (Button) findViewById(R.id.emergencyButton); 
     emergencies.setOnClickListener(new View.OnClickListener() { 

      @Override 
      public void onClick(View v) { 
       // TODO Auto-generated method stub 
       Intent myIntent = new Intent(Home.this, EmergencyList.class); 
       Home.this.startActivity(myIntent); 
      } 
     }); 
     Button disruptions = (Button) findViewById(R.id.disruptionButton); 
     disruptions.setOnClickListener(new View.OnClickListener() { 

      @Override 
      public void onClick(View v) { 
       // TODO Auto-generated method stub 
       Intent myIntent2 = new Intent(Home.this, DisruptionList.class); 
       startActivity(myIntent2); 
      } 
     }); 
    } 

    @Override 
    protected boolean isRouteDisplayed() { 
     // TODO Auto-generated method stub 
     return false; 
    } 
} 

任何想法?思考? 這一切都是現在。 非常感謝。

P.S. 我是一名新的android開發人員。

+0

橙色警告標誌是什麼意思? Logcat發生崩潰時的錯誤是什麼?你是什​​麼意思,它在Ace上「什麼都不做」?不確定你的意思。它是否適用於任何其他實際設備? – 2012-04-05 16:42:29

+0

有幾個手機旁邊有一個黃色的警告圖標,可以正常使用我的所有應用程序,所以我想這不是問題。 – JeffS 2012-04-06 00:31:44

回答

1

如果其他人有相同的問題,我想我找到了解決方案。

我在logcat中擡起頭來的錯誤:

04-06 00:27:13.510: E/AndroidRuntime(3163): android.os.NetworkOnMainThreadException 

並據此http://developer.android.com/reference/android/os/NetworkOnMainThreadException.html

似乎有些(更新版)的Android版本不允許在MainActivity或類似的東西互聯網的連接請求那。

即使我瞄準Android版本10(2.3)我仍然有錯誤,所以我改變了我的項目目標到版本8,它現在似乎工作正常。

1

我假設您正在使用不同的Maps API KEY來模擬應用程序,另一個不同的簽名是使用您的MD5簽名在設備上運行應用程序。看看它here

+0

爲此+1,通常地圖活動將看起來像一個空白的網格,但這是一個很好的開始 – HoratioCain 2012-04-05 17:13:08

+0

@Pelanes 我不知道我明白你的意思。由於它是在模擬器上運行相同的代碼,並在我的設備上運行相同的應用程序相同的應用程序... 另請注意,當我第一次生成Maps API KEY時,我得到的是灰色網格(在我的模擬器上。仍然不能在設備上運行)。 然後,我在YouTube上看到了一個CornBoyzAndroid教程,並且我創建了一個用於調試的Maps API密鑰,它允許我的地圖在模擬器上完美加載,但仍然無法在我的設備上運行。 – bubbly 2012-04-05 20:43:40

+0

@RobLourens 橙色標誌是這樣的: http://i44.tinypic.com/e9hk07.png 在王牌,當我點擊登錄(地圖前步驟),它只是沒有響應,然後它迴應,但它好像我沒有按任何東西。如果我再次按下它會再次發生。它不會彈出「強制關閉」消息。 Motorolla雖然... 王牌放棄LogCat沒有錯誤... Motorolla給出了一些,但我不真正瞭解他們。我將它們保存在2個不同的.txt文件中。在下面下載它們。 http://www.mediafire.com/?plmhhk9f3p4vflk – bubbly 2012-04-05 21:31:45

相關問題