2012-04-05 95 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

相关问题