inklusive <uses-permission android:name=“android.die Genehmigung.INTERNET" /> in manifest-Fehler verursacht

Habe ich schon angefangen zu lernen, über die Vernetzung und arbeiten bereits an einer android-Anwendung zu testen, was ich gelernt habe. Nun, ich habe zusammen mit einem tutorial auf dem web, aber etwas seltsames zu passieren scheint. Das Programm hat eine schwerwiegende Ausnahme, wenn ich auch die Berechtigung für den Internetzugang, sondern gibt mir eine EACCES verweigert Fehler, wenn ich nicht zählen.

Hier ist mein code (halten Sie im Verstand dies ist eine Menge von mir nur Experimentieren und ausprobieren):

package com.test.sockettest;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.InetAddress;
import java.net.ServerSocket;
import java.net.Socket;
import java.util.List;

import android.app.Activity;
import android.app.Dialog;
import android.os.Bundle;
import android.os.Handler;
import android.util.Log;
import android.view.Menu;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;

public class MainActivity extends Activity {

    public static final int TEST = 0;
    public static final int SERVER_PORT = 11235;

    TextView conversation;
    EditText messageInput;
    Button sendButton;
    ServerSocket servSock;
    List<Socket> outputs;
    Thread serverThread, clientThread;
    Handler conersationUpdater;
    String ipString;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        try {
            init();
        } catch (IOException e) {
            Log.d("SOCKET", "1" + e.toString());
            e.printStackTrace();
        }

    }

    private void init() throws IOException {
        findViewsById();
        serverThread = new Thread(new Server());
        askForIp();
        connect();
    }

    private void findViewsById() {
        conversation = (TextView) findViewById(R.id.conversation);
        messageInput = (EditText) findViewById(R.id.messageInput);
        sendButton = (Button) findViewById(R.id.sendButton);
    }

    class Server implements Runnable {

        @Override
        public void run() {
            Socket inputSock = null;
            try {
                servSock = new ServerSocket(SERVER_PORT);
            } catch (Exception e) {
                Log.d("SOCKET", "2" + e.toString());
            }
            while (!Thread.currentThread().isInterrupted()) {
                try {
                    inputSock = servSock.accept();

                    Input in = new Input(inputSock);

                    new Thread(in).start();

                    outputs.add(new Socket(inputSock.getInetAddress(),
                            inputSock.getPort()));
                } catch (Exception e) {
                    Log.d("SOCKET", "3" + e.toString());
                }
            }
        }
    }

    class Input implements Runnable {
        private BufferedReader in;

        public Input(Socket socket) {
            try {
                in = new BufferedReader(new InputStreamReader(
                        socket.getInputStream()));
            } catch (Exception e) {
                Log.d("SOCKET", "4" + e.toString());
            }
        }

        public void run() {
            while (!Thread.currentThread().isInterrupted()) {
                try {
                    String read = in.readLine();

                    conersationUpdater.post(new Update(read));
                } catch (Exception e) {
                    Log.d("SOCKET", "5" + e.toString());
                }

            }
        }
    }

    class Update implements Runnable {
        private String msg;

        public Update(String read) {
            msg = read;
        }

        public void run() {
            conversation
                    .setText(conversation.getText().toString() + msg + "\n");
        }
    }

    private void connect() throws IOException {
        InetAddress address = InetAddress.getByName(ipString);
        outputs.add(new Socket(address, SERVER_PORT));
    }

    private void askForIp() {
        final Dialog d = new Dialog(this);
        d.setContentView(R.layout.connect_dialog_layout);
        d.setTitle("Connect to IP...");

        final EditText ip = (EditText) findViewById(R.id.connectDialogIpBox);
        Button connect = (Button) findViewById(R.id.connectDialogButton);

        try {
            connect.setOnClickListener(new OnClickListener() {

                @Override
                public void onClick(View v) {
                    ipString = ip.getText().toString();
                    d.dismiss();
                }
            });
        } catch (Exception e) {
            Log.d("SOCKET", "11" + e.toString());
        }

        d.show();
    }

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        //Inflate the menu; this adds items to the action bar if it is present.
        getMenuInflater().inflate(R.menu.main, menu);
        return true;
    }

}

Und hier sind die zwei unterschiedliche Manifest-Dateien:

1:

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

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

    <application
        android:allowBackup="true"
        android:icon="@drawable/ic_launcher"
        android:label="@string/app_name"
        android:theme="@style/AppTheme" >
        <activity
            android:name="com.test.sockettest.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>

</manifest>

2:

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

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

    <application
        android:allowBackup="true"
        android:icon="@drawable/ic_launcher"
        android:label="@string/app_name"
        android:theme="@style/AppTheme" >
        <activity
            android:name="com.test.sockettest.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>

</manifest>

Schließlich haben die beiden error logs:

1:

10-10 18:44:26.327: D/dalvikvm(32189): Late-enabling CheckJNI
10-10 18:44:26.517: D/SOCKET(32189): 11java.lang.NullPointerException
10-10 18:44:26.537: D/AndroidRuntime(32189): Shutting down VM
10-10 18:44:26.537: W/dalvikvm(32189): threadid=1: thread exiting with uncaught exception (group=0x41eec7c0)
10-10 18:44:26.537: E/AndroidRuntime(32189): FATAL EXCEPTION: main
10-10 18:44:26.537: E/AndroidRuntime(32189): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.test.sockettest/com.test.sockettest.MainActivity}: android.os.NetworkOnMainThreadException
10-10 18:44:26.537: E/AndroidRuntime(32189):    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2280)
10-10 18:44:26.537: E/AndroidRuntime(32189):    at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2330)
10-10 18:44:26.537: E/AndroidRuntime(32189):    at android.app.ActivityThread.access$700(ActivityThread.java:154)
10-10 18:44:26.537: E/AndroidRuntime(32189):    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1306)
10-10 18:44:26.537: E/AndroidRuntime(32189):    at android.os.Handler.dispatchMessage(Handler.java:99)
10-10 18:44:26.537: E/AndroidRuntime(32189):    at android.os.Looper.loop(Looper.java:137)
10-10 18:44:26.537: E/AndroidRuntime(32189):    at android.app.ActivityThread.main(ActivityThread.java:5368)
10-10 18:44:26.537: E/AndroidRuntime(32189):    at java.lang.reflect.Method.invokeNative(Native Method)
10-10 18:44:26.537: E/AndroidRuntime(32189):    at java.lang.reflect.Method.invoke(Method.java:525)
10-10 18:44:26.537: E/AndroidRuntime(32189):    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1046)
10-10 18:44:26.537: E/AndroidRuntime(32189):    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:862)
10-10 18:44:26.537: E/AndroidRuntime(32189):    at dalvik.system.NativeStart.main(Native Method)
10-10 18:44:26.537: E/AndroidRuntime(32189): Caused by: android.os.NetworkOnMainThreadException
10-10 18:44:26.537: E/AndroidRuntime(32189):    at android.os.StrictMode$AndroidBlockGuardPolicy.onNetwork(StrictMode.java:1144)
10-10 18:44:26.537: E/AndroidRuntime(32189):    at libcore.io.BlockGuardOs.connect(BlockGuardOs.java:84)
10-10 18:44:26.537: E/AndroidRuntime(32189):    at libcore.io.IoBridge.connectErrno(IoBridge.java:127)
10-10 18:44:26.537: E/AndroidRuntime(32189):    at libcore.io.IoBridge.connect(IoBridge.java:112)
10-10 18:44:26.537: E/AndroidRuntime(32189):    at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:192)
10-10 18:44:26.537: E/AndroidRuntime(32189):    at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:172)
10-10 18:44:26.537: E/AndroidRuntime(32189):    at java.net.Socket.startupSocket(Socket.java:566)
10-10 18:44:26.537: E/AndroidRuntime(32189):    at java.net.Socket.<init>(Socket.java:225)
10-10 18:44:26.537: E/AndroidRuntime(32189):    at com.test.sockettest.MainActivity.connect(MainActivity.java:134)
10-10 18:44:26.537: E/AndroidRuntime(32189):    at com.test.sockettest.MainActivity.init(MainActivity.java:57)
10-10 18:44:26.537: E/AndroidRuntime(32189):    at com.test.sockettest.MainActivity.onCreate(MainActivity.java:45)
10-10 18:44:26.537: E/AndroidRuntime(32189):    at android.app.Activity.performCreate(Activity.java:5284)
10-10 18:44:26.537: E/AndroidRuntime(32189):    at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1104)
10-10 18:44:26.537: E/AndroidRuntime(32189):    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2244)
10-10 18:44:26.537: E/AndroidRuntime(32189):    ... 11 more

2:

10-11 18:41:19.694: D/SOCKET(2086): 11java.lang.NullPointerException
10-11 18:41:19.704: D/SOCKET(2086): 1java.net.SocketException: socket failed: EACCES (Permission denied)
10-11 18:41:19.704: W/System.err(2086): java.net.SocketException: socket failed: EACCES (Permission denied)
10-11 18:41:19.714: W/System.err(2086):     at libcore.io.IoBridge.socket(IoBridge.java:576)
10-11 18:41:19.714: W/System.err(2086):     at java.net.PlainSocketImpl.create(PlainSocketImpl.java:201)
10-11 18:41:19.714: W/System.err(2086):     at java.net.Socket.startupSocket(Socket.java:559)
10-11 18:41:19.714: W/System.err(2086):     at java.net.Socket.<init>(Socket.java:225)
10-11 18:41:19.714: W/System.err(2086):     at com.test.sockettest.MainActivity.connect(MainActivity.java:132)
10-11 18:41:19.714: W/System.err(2086):     at com.test.sockettest.MainActivity.init(MainActivity.java:55)
10-11 18:41:19.714: W/System.err(2086):     at com.test.sockettest.MainActivity.onCreate(MainActivity.java:43)
10-11 18:41:19.714: W/System.err(2086):     at android.app.Activity.performCreate(Activity.java:5284)
10-11 18:41:19.714: W/System.err(2086):     at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1104)
10-11 18:41:19.714: W/System.err(2086):     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2244)
10-11 18:41:19.714: W/System.err(2086):     at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2330)
10-11 18:41:19.714: W/System.err(2086):     at android.app.ActivityThread.access$700(ActivityThread.java:154)
10-11 18:41:19.714: W/System.err(2086):     at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1306)
10-11 18:41:19.714: W/System.err(2086):     at android.os.Handler.dispatchMessage(Handler.java:99)
10-11 18:41:19.714: W/System.err(2086):     at android.os.Looper.loop(Looper.java:137)
10-11 18:41:19.714: W/System.err(2086):     at android.app.ActivityThread.main(ActivityThread.java:5368)
10-11 18:41:19.714: W/System.err(2086):     at java.lang.reflect.Method.invokeNative(Native Method)
10-11 18:41:19.714: W/System.err(2086):     at java.lang.reflect.Method.invoke(Method.java:525)
10-11 18:41:19.714: W/System.err(2086):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1046)
10-11 18:41:19.714: W/System.err(2086):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:862)
10-11 18:41:19.714: W/System.err(2086):     at dalvik.system.NativeStart.main(Native Method)
10-11 18:41:19.714: W/System.err(2086): Caused by: libcore.io.ErrnoException: socket failed: EACCES (Permission denied)
10-11 18:41:19.714: W/System.err(2086):     at libcore.io.Posix.socket(Native Method)
10-11 18:41:19.714: W/System.err(2086):     at libcore.io.BlockGuardOs.socket(BlockGuardOs.java:181)
10-11 18:41:19.714: W/System.err(2086):     at libcore.io.IoBridge.socket(IoBridge.java:561)
10-11 18:41:19.714: W/System.err(2086):     ... 20 more

Irgendwelche Gedanken?

InformationsquelleAutor OnePphire | 2013-10-11

Schreibe einen Kommentar