AndroidManifest.xml' package.name.Activity'不能分配给' android.app.Activity'

时间:2016-08-22 22:23:09

标签: java android xml sockets tcp

我试图在java上创建一个简单的android客户端,使用TCP将字符串发送到PC上的python服务器。但是,我不断收到此错误消息。它让我运行我的应用程序,但每当我尝试发送字符串时它就会崩溃。我正在使用Android Studio 2.1.2,我在物理Android设备上运行测试。这是代码(未完成但应该已经发送了字符串):

package brea.breverser;

import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;

import java.io.DataOutputStream;
import java.io.IOException;
import java.io.OutputStreamWriter;
import java.io.PrintWriter;
import java.net.Socket;
import java.net.UnknownHostException;

public class RequestToServer extends AppCompatActivity {

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

    }

    public void sendPlay(View view) {
        try {
            Socket s = new Socket("192.168.1.35", 5000);
            DataOutputStream output = new DataOutputStream(s.getOutputStream());
            output.writeUTF("HELLO_WORLD");
            output.close();
            s.close();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

这是AndroidManifest.xml:

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="brea.breverser">
    <uses-permission android:name="android.permission.INTERNET" />
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
    <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />

    <application
        android:allowBackup="true"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:supportsRtl="true"
        android:theme="@style/AppTheme">
        <activity android:name=".RequestToServer">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

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

</manifest>

引发以下异常:

'brea.breverser.RequestToServer' is not assignable to 'android.app.Activity' (at line 14) 

这里有logcat:

08-23 00:17:32.661 29558-29558/brea.breverser W/ActivityThread: Application brea.breverser can be debugged on port 8100...
08-23 00:17:32.681 29558-29558/brea.breverser W/System: ClassLoader referenced unknown path: /data/app/brea.breverser-2/lib/arm
08-23 00:17:33.942 29558-29558/brea.breverser W/System: ClassLoader referenced unknown path: /data/app/brea.breverser-2/lib/arm
08-23 00:17:34.257 29558-29558/brea.breverser W/art: Before Android 4.1, method android.graphics.PorterDuffColorFilter android.support.graphics.drawable.VectorDrawableCompat.updateTintFilter(android.graphics.PorterDuffColorFilter, android.content.res.ColorStateList, android.graphics.PorterDuff$Mode) would have incorrectly overridden the package-private method in android.graphics.drawable.Drawable
08-23 00:17:34.393 29558-29636/brea.breverser D/OpenGLRenderer: Use EGL_SWAP_BEHAVIOR_PRESERVED: true
08-23 00:17:34.458 29558-29636/brea.breverser I/Adreno-EGL: <qeglDrvAPI_eglInitialize:379>: QUALCOMM Build: 10/09/15, 6cbbf7d, I3193f6e94a
08-23 00:17:34.461 29558-29636/brea.breverser I/OpenGLRenderer: Initialized EGL, version 1.4
08-23 00:17:36.937 29558-29558/brea.breverser D/AndroidRuntime: Shutting down VM
08-23 00:17:36.960 29558-29558/brea.breverser E/AndroidRuntime: FATAL EXCEPTION: main
                                                                Process: brea.breverser, PID: 29558
                                                                java.lang.IllegalStateException: Could not execute method for android:onClick
                                                                    at android.support.v7.app.AppCompatViewInflater$DeclaredOnClickListener.onClick(AppCompatViewInflater.java:293)
                                                                    at android.view.View.performClick(View.java:5201)
                                                                    at android.view.View$PerformClick.run(View.java:21163)
                                                                    at android.os.Handler.handleCallback(Handler.java:746)
                                                                    at android.os.Handler.dispatchMessage(Handler.java:95)
                                                                    at android.os.Looper.loop(Looper.java:148)
                                                                    at android.app.ActivityThread.main(ActivityThread.java:5443)
                                                                    at java.lang.reflect.Method.invoke(Native Method)
                                                                    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:728)
                                                                    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:618)
                                                                 Caused by: java.lang.reflect.InvocationTargetException
                                                                    at java.lang.reflect.Method.invoke(Native Method)
                                                                    at android.support.v7.app.AppCompatViewInflater$DeclaredOnClickListener.onClick(AppCompatViewInflater.java:288)
                                                                    at android.view.View.performClick(View.java:5201) 
                                                                    at android.view.View$PerformClick.run(View.java:21163) 
                                                                    at android.os.Handler.handleCallback(Handler.java:746) 
                                                                    at android.os.Handler.dispatchMessage(Handler.java:95) 
                                                                    at android.os.Looper.loop(Looper.java:148) 
                                                                    at android.app.ActivityThread.main(ActivityThread.java:5443) 
                                                                    at java.lang.reflect.Method.invoke(Native Method) 
                                                                    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:728) 
                                                                    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:618) 
                                                                 Caused by: android.os.NetworkOnMainThreadException
                                                                    at android.os.StrictMode$AndroidBlockGuardPolicy.onNetwork(StrictMode.java:1287)
                                                                    at libcore.io.BlockGuardOs.connect(BlockGuardOs.java:110)
                                                                    at libcore.io.IoBridge.connectErrno(IoBridge.java:137)
                                                                    at libcore.io.IoBridge.connect(IoBridge.java:122)
                                                                    at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:183)
                                                                    at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:163)
                                                                    at java.net.Socket.startupSocket(Socket.java:592)
                                                                    at java.net.Socket.tryAllAddresses(Socket.java:128)
                                                                    at java.net.Socket.<init>(Socket.java:178)
                                                                    at java.net.Socket.<init>(Socket.java:150)
                                                                    at brea.breverser.RequestToServer.sendPlay(RequestToServer.java:26)
                                                                    at java.lang.reflect.Method.invoke(Native Method) 
                                                                    at android.support.v7.app.AppCompatViewInflater$DeclaredOnClickListener.onClick(AppCompatViewInflater.java:288) 
                                                                    at android.view.View.performClick(View.java:5201) 
                                                                    at android.view.View$PerformClick.run(View.java:21163) 
                                                                    at android.os.Handler.handleCallback(Handler.java:746) 
                                                                    at android.os.Handler.dispatchMessage(Handler.java:95) 
                                                                    at android.os.Looper.loop(Looper.java:148) 
                                                                    at android.app.ActivityThread.main(ActivityThread.java:5443) 
                                                                    at java.lang.reflect.Method.invoke(Native Method) 
                                                                    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:728) 
                                                                    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:618) 

2 个答案:

答案 0 :(得分:1)

我不认为您的清单是问题,应用程序包名称&amp;活动名称与您的活动的包关键字对齐。

从您的转储中,看起来异常的原因是您的“主线程上的网络”异常。尝试将网络活动移动到后台线程,看看会发生什么。在主线程上进行网络调用从来都不是一个好主意,当你尝试这样做时,操作系统会抛出异常。

尝试使用AsyncTask或尝试将实际网络调用包装在runnable中并将其提交给后台工作线程。

答案 1 :(得分:0)

  

引起:android.os.NetworkOnMainThreadException

Android不允许应用主线程上的网络活动。您需要创建一个新线程来执行此操作。有关详细信息,请参阅How to fix android.os.NetworkOnMainThreadException?