无法将android连接到phpmyadmin

时间:2016-01-18 17:23:26

标签: android android-studio localhost

这是我的main.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical" android:layout_width="fill_parent"
android:layout_height="fill_parent">
<ListView android:id="@android:id/list" android:layout_width="fill_parent"
    android:layout_height="wrap_content" />
</LinearLayout>

这是我的清单。

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.jv.connection">


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

    android:allowBackup="true"
    android:icon="@mipmap/ic_launcher"
    android:label="@string/app_name"
    android:supportsRtl="true"
    android:theme="@style/AppTheme">

    <activity
        android:name="com.jv.dataevent.MainActivity"
        android:label="@string/app_name" >
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />

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

</application>

这是我的MainActivity。

package com.jv.dataevent;

import android.app.ListActivity;
import android.os.Bundle;
import android.widget.ArrayAdapter;

import com.jv.connection.R;

import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.MalformedURLException;
import java.net.URL;
import java.util.ArrayList;

public class MainActivity extends ListActivity {

/**
 * Called when the activity is first created.
 */
@SuppressWarnings("unchecked")
@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.content_main);

    setListAdapter(new ArrayAdapter(
            this, android.R.layout.simple_list_item_1,
            this.populate()));
}

private ArrayList populate() {
    ArrayList items = new ArrayList();

    try {
        URL url = new URL("http://10.0.2.2/food.php");
        HttpURLConnection urlConnection = (HttpURLConnection) url.openConnection();
        urlConnection.setRequestMethod("POST");
        urlConnection.connect();

        BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(
                        urlConnection.getInputStream()));

        String next;
        while ((next = bufferedReader.readLine()) != null) {
            JSONArray ja = new JSONArray(next);

            for (int i = 0; i < ja.length(); i++) {
                JSONObject jo = (JSONObject) ja.get(i);
                items.add(jo.getString("food_id"));
                items.add(jo.getString("food_name"));
            }
        }
    } catch (MalformedURLException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    } catch (IOException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    } catch (JSONException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }
    return items;
  }
}

我想将我的Android应用程序连接到数据库并在列表项中读取它。 当我将它播放到模拟器时,它显示不幸的是,myapp已停止。并显示此错误

01-18 12:20:08.188 27841-27841/com.jv.dataevent E/AndroidRuntime: FATAL EXCEPTION: main
                                                              Process: com.jv.dataevent, PID: 27841
                                                              java.lang.RuntimeException: Unable to start activity ComponentInfo{com.jv.dataevent/com.jv.dataevent.MainActivity}: android.os.NetworkOnMainThreadException
                                                                  at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2184)
                                                                  at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2233)
                                                                  at android.app.ActivityThread.access$800(ActivityThread.java:135)
                                                                  at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1196)
                                                                  at android.os.Handler.dispatchMessage(Handler.java:102)
                                                                  at android.os.Looper.loop(Looper.java:136)
                                                                  at android.app.ActivityThread.main(ActivityThread.java:5001)
                                                                  at java.lang.reflect.Method.invokeNative(Native Method)
                                                                  at java.lang.reflect.Method.invoke(Method.java:515)
                                                                  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:785)
                                                                  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:601)
                                                                  at dalvik.system.NativeStart.main(Native Method)
                                                               Caused by: android.os.NetworkOnMainThreadException
                                                                  at android.os.StrictMode$AndroidBlockGuardPolicy.onNetwork(StrictMode.java:1145)
                                                                  at libcore.io.BlockGuardOs.connect(BlockGuardOs.java:84)
                                                                  at libcore.io.IoBridge.connectErrno(IoBridge.java:127)
                                                                  at libcore.io.IoBridge.connect(IoBridge.java:112)
                                                                  at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:192)
                                                                  at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:459)
                                                                  at java.net.Socket.connect(Socket.java:843)
                                                                  at com.android.okhttp.internal.Platform.connectSocket(Platform.java:131)
                                                                  at com.android.okhttp.Connection.connect(Connection.java:101)
                                                                  at com.android.okhttp.internal.http.HttpEngine.connect(HttpEngine.java:294)
                                                                  at com.android.okhttp.internal.http.HttpEngine.sendSocketRequest(HttpEngine.java:255)
                                                                  at com.android.okhttp.internal.http.HttpEngine.sendRequest(HttpEngine.java:206)
                                                                  at com.android.okhttp.internal.http.HttpURLConnectionImpl.execute(HttpURLConnectionImpl.java:345)
                                                                  at com.android.okhttp.internal.http.HttpURLConnectionImpl.connect(HttpURLConnectionImpl.java:89)
                                                                  at com.jv.dataevent.MainActivity.populate(MainActivity.java:44)
                                                                  at com.jv.dataevent.MainActivity.onCreate(MainActivity.java:32)
                                                                  at android.app.Activity.performCreate(Activity.java:5231)
                                                                  at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1087)
                                                                  at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2148)
                                                                  at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2233) 
                                                                  at android.app.ActivityThread.access$800(ActivityThread.java:135) 
                                                                  at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1196) 
                                                                  at android.os.Handler.dispatchMessage(Handler.java:102) 
                                                                  at android.os.Looper.loop(Looper.java:136) 
                                                                  at android.app.ActivityThread.main(ActivityThread.java:5001) 
                                                                  at java.lang.reflect.Method.invokeNative(Native Method) 
                                                                  at java.lang.reflect.Method.invoke(Method.java:515) 
                                                                  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:785) 
                                                                  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:601) 
                                                                  at dalvik.system.NativeStart.main(Native Method) 

感谢有人在这里帮助我。

2 个答案:

答案 0 :(得分:0)

尝试在主线程上执行网络操作时抛出NetworkOnMainThreadException

见:

http://developer.android.com/reference/android/os/NetworkOnMainThreadException.html

为网络操作创建新线程或在服务中运行。

答案 1 :(得分:-1)

您正在尝试访问网络主线程,这是Android 3.0禁止的。

要解决此问题,您需要使用AsyncTask