ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

java与安卓socket通讯

2022-08-02 15:00:36  阅读:239  来源: 互联网

标签:java socket 安卓 String user new import out


原生java socket通讯

server端

start.java

package server.action;

import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.IOException;
import java.io.UnsupportedEncodingException;
import java.net.ServerSocket;
import java.net.Socket;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;

public class start {

    static List<User> users;

    public static void main(String[] args){
        final int host = 9999;
        ServerSocket server = null;
        try {
            server = new ServerSocket(host);
        } catch (IOException e) {
            e.printStackTrace();
        }
        users = new ArrayList<>();


        while(true){
            System.out.println("listening...");
            Socket socket = null;
            try {
                socket = server.accept();
            } catch (IOException e) {
                e.printStackTrace();
            }
            System.out.println("success");

            Date day=new Date();
            SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
            // dateTime = df.format(day);
            System.out.println(df.format(day));
            User user = new User();
            user.setSocket(socket);
            user.setIp(socket.getInetAddress().getHostAddress());
//            user.setUsername(getSocketName.value);
            users.add(user);
            System.out.println("users"+users);
            System.out.println("聊天室人数"+users.size());

//            createAMenber(user);
            MenberThread thread = new MenberThread(user);
            thread.start();
        }
    }
}

class MenberThread extends Thread{
    private int wordslong = 128;
    private User user;

    public MenberThread(User user){
        this.user = user;
    }
    @Override
    public void run() {
        while(true){
            BufferedInputStream inputStream = null;

            try {
//                        BufferedOutputStream tip = new BufferedOutputStream(user.getSocket().getOutputStream());
//                        tip.write("success".getBytes("utf-8"));
//                        tip.flush();

                inputStream = new BufferedInputStream(this.user.getSocket().getInputStream());
            }catch (Exception e){
                e.printStackTrace();
            }

            byte[] b = new byte[wordslong];

            try {
                inputStream.read(b);
            } catch (Exception e1) {
                e1.printStackTrace();
                try {
                    this.user.getSocket().close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
                System.out.println(this.user.getUsername()+"退出(inputStream)");
                System.out.println("聊天室人数"+start.users.size());
                start.users.remove(this.user);
                return;
//                for (User user2:start.users){
//                    if(user2.getIp().equals(this.user.getIp())){
//                        System.out.println(user2);
//                        System.out.println("退出");
//                        // users.remove(i);
//                        start.users.remove(user2);
////                                         System.out.println("outputStream.flush();");
//// //                                        System.out.println("users.remove(user2)");
////                                         System.out.println("users"+users);
////                                        break;
//                        System.out.println("聊天室人数"+start.users.size());
//                        break;
//                    }
//                }

//                return;
            }
            String str = null;
            try {
                str = new String(b, "utf-8");
            } catch (UnsupportedEncodingException e1) {
                e1.printStackTrace();
            }
            System.out.println(str);
            if(this.user.getRole() == null){
                this.user.setActivityId(str.split("&")[2]);
                this.user.setRole(str.split("&")[0]);
                this.user.setUsername(str.split("&")[1]);
                continue;
            }

            //数据广播
            for(int i = 0; i < start.users.size(); i++){
                User user1 = start.users.get(i);


                if(!this.user.getActivityId().equals(user1.getActivityId())){
                    continue;
                }


                BufferedOutputStream outputStream = null;
                try {
                    outputStream = new BufferedOutputStream(user1.getSocket().getOutputStream());
                } catch (IOException e1) {
                    e1.printStackTrace();
                }
                try {
                    Date day=new Date();
                    SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
                    // System.out.println(df.format(day));
                    outputStream.write((df.format(day)+":"+user.getUsername()+"("+user.getRole()+")"+":"+str).getBytes("UTF-8"));
                    outputStream.flush();
                    System.out.println("已广播"+user1.getUsername());
                } catch (Exception e1) {
                    e1.printStackTrace();
                    try {
                        this.user.getSocket().close();
                    } catch (IOException e) {
                        e.printStackTrace();
                    }
                    System.out.println(this.user.getUsername()+"退出(inputStream)");
                    System.out.println("聊天室人数"+start.users.size());
                    start.users.remove(this.user);
//                        for (User user2:start.users){
//                            if(user2.getIp().equals(user.getIp())){
//                                System.out.println(user2);
//                                System.out.println("退出");
//                                // users.remove(i);
//                                start.users.remove(user2);
//                                //                                         System.out.println("outputStream.flush();");
//                                // //                                        System.out.println("users.remove(user2)");
//                                System.out.println("聊天室人数"+start.users.size());
//                                break;
//                            }
//                        }
//
//                        return;
                }

            }
        }
    }
}
class User{
    private Socket socket = null;
    private String username = null;
    private String activityId = null;
    private String ip = null;
    private String role = null;

    public User(){}

    @Override
    public String toString() {
        return "User{" +
                "socket=" + socket +
                ", username='" + username + '\'' +
                ", activityId='" + activityId + '\'' +
                ", ip='" + ip + '\'' +
                ", role='" + role + '\'' +
                '}';
    }

    public String getActivityId() {
        return activityId;
    }

    public void setActivityId(String activityId) {
        this.activityId = activityId;
    }

    public String getRole() {
        return role;
    }

    public void setRole(String role) {
        this.role = role;
    }

    public String getIp() {
        return ip;
    }

    public void setIp(String ip) {
        this.ip = ip;
    }

    public Socket getSocket() {
        return socket;
    }

    public void setSocket(Socket socket) {
        this.socket = socket;
    }

    public String getUsername() {
        return username;
    }

    public void setUsername(String username) {
        this.username = username;
    }
}

client端

start.java

package client.action;

public class start {

    public static void main(String[] args) {
        new initClient();
    }

}

initClient.java

package client.action;


import client.util.getSocket;

import javax.swing.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.net.Socket;
import java.util.Scanner;

class initClient extends ClientWindows
{
    Socket socket;
    final int wordslong = 128;
    String name;

    initClient()
    {
        super();
        name = JOptionPane.showInputDialog("input your name");
        socket = new getSocket().getData();

        receive();

        Scanner read = new Scanner(System.in);

        try
        {
            BufferedOutputStream out = new BufferedOutputStream(socket.getOutputStream());
            String tellall = name+"join in";
            out.write(tellall.getBytes("utf-8"));
            out.flush();

            jb3.addActionListener(new ActionListener() {
                @Override
                public void actionPerformed(ActionEvent e) {
                    try{
                        String str = jare2.getText();
                        jare2.setText("");
                        str = name+"says: "+str;
                        out.write(str.getBytes("utf-8"));
                        out.flush();
                    }
                    catch(Exception e1)
                    {
                        out(e1.toString());
                    }
                }
            });
        }
        catch(Exception e)
        {
            //System.out.arintln(e.toString());
            out(e.toString());
        }       
    }

    void receive(){

    	new Thread( new Runnable() {
    		public void run()
    		{
    			while(true)
    		    {
    		        try
    		        {
                        BufferedInputStream in = new BufferedInputStream(socket.getInputStream());
                        byte[] b = new byte[wordslong];
                        in.read(b);
                        String str = new String(b, "utf-8");
                        //System.out.arintln(str);
                        out(str);
    		        }
    		        catch(Exception e)
        		    {                           
                        //System.out.arintln(e.toString());
                        out(e.toString());
                        break;
        		    }
    		    }
    		}
    	}).start();
    }

    void out(String str)
    {
        jare1.append(str);
        jare1.append("\n");
    }
}

ClientWindows.java

package client.action;

import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

class ClientWindows extends JFrame {
    //定义组件
    JPanel ja1,ja2;//定义两个面板
    JButton jb1,jb2,jb3;//定义按钮
    JLabel jl1,jl2;
    JTextField jt1;
    JTextArea jare1,jare2;
    
//    String[] emoij = {"w(?Д?)w","(??????)??","Σ( ° △ °|||)︴","凸(艹皿艹 )","(°ー°〃)","(ˉ▽ ̄~) 切~~","┑( ̄Д  ̄)┍","━┳━ ━┳━","o( =?ω?= )m","ヽ(*。>Д<)o゜","━━( ̄ー ̄*|||━━",
//            "X﹏X","⊙▽⊙","Σ(`д′*ノ)ノ","O(≧口≦)O","o(*////▽////*)q","ヾ( ̄▽ ̄)Bye~Bye~","?▽?","(?Д?*)?","( ̄▽ ̄)~■干杯□~( ̄▽ ̄)"};

    String emoij = "    w(?Д?)w  (??????)??  Σ( ° △ °|||)︴ 凸(艹皿艹 )  (°ー°〃)  (ˉ▽ ̄~)  切~~┑( ̄Д  ̄)┍  ━┳━ ━┳━  o( =?ω?= )m  ヽ(*。>Д<)o゜  ━━( ̄ー ̄*|||━━ "+
                   "X﹏X  ⊙▽⊙  Σ(`д′*ノ)ノ  O(≧口≦)O  o(*////▽////*)q  ヾ( ̄▽ ̄)Bye~Bye~  ?▽?  (?Д?*)?  ( ̄▽ ̄)~■干杯□~( ̄▽ ̄)    ";

    //构造函数
    ClientWindows(){
//        ImageIcon im = new ImageIcon("timg2.gif");
//        Image image = im.getImage();
//        Image smallImage = image.getScaledInstance(150,400,Image.SCALE_FAST);
//        ImageIcon img = new ImageIcon(smallImage);
//        jl1 = new JLabel(img);
//        this.add(jl1);

        ja1=new JPanel();
        ja2=new JPanel();
        jare1 = new JTextArea(28,60);
        JScrollPane scrollaane_1 = new JScrollPane(jare1);
        scrollaane_1.setSize(10,10);

        scrollaane_1.setVerticalScrollBarPolicy( JScrollPane.VERTICAL_SCROLLBAR_ALWAYS);//滚动条一直显示
//        scrollaane_1.setVerticalScrollBarPolicy();
        jare1.setEditable(false);//只读
        jare1.setLineWrap(true);//行过长自动换行
        jare1.setWrapStyleWord(true);//单词换行
        this.add(scrollaane_1);

        //jb1 = new JButton("文件");
        //this.add(jb1);
        jb2 = new JButton("表情");
        jb2.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {
                JFrame jfame = new JFrame("表情");
                jfame.setSize(500,500);
                jfame.setLayout(new FlowLayout());
                jfame.setLocationRelativeTo(null);
                jfame.setDefaultCloseOperation(JFrame.HIDE_ON_CLOSE);
//                jfame.setDefaultCloseOperation();
                jfame.setResizable(false);
                jfame.setVisible(true);
                JTextArea jare4 = new JTextArea(30,60);

                jare4.append(emoij);
//                for(int i = 0;i<emoij.length;i++){
//                    jare4.append(emoij[i]);
////                    if(i<emoij.length-1){
////                        jare4.append("         ");
////                    }
//                }
                jare4.setEditable(false);//只读
                jare4.setLineWrap(true);//行过长自动换行
                jare4.setWrapStyleWord(true);//单词换行
                jfame.add(jare4);
            }

        });
        this.add(jb2);
        jb3 = new JButton("发送");
        
        this.add(jb3);
        add(new JLabel("          "));//添加空白标签来实现换行

        jare2 = new JTextArea(10,60);//输入
        JScrollPane scrollaane_2 = new JScrollPane(jare2);
        scrollaane_2.setSize(10,10);
//        setVerticalScrollBaraolicy
        scrollaane_2.setVerticalScrollBarPolicy( JScrollPane.VERTICAL_SCROLLBAR_ALWAYS);//滚动条一直显示
        jare2.setLineWrap(true);
        jare2.setWrapStyleWord(true);
        ja1.add(scrollaane_2);
        this.add(ja1);

        //设置窗口属性
        this.setLayout(new FlowLayout());
        this.setSize(700,700);
        this.setTitle("聊天窗口");
        this.setLocationRelativeTo(null);//居中
        this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        this.setResizable(false);
        this.setVisible(true);
    }

    public static void main(String[] args) {
        new ClientWindows();
    }
}

getSocket.java

package client.util;

import java.io.IOException;
import java.net.Socket;

/**
 * @author xzy
 * @create 2021/12/26 21:03
 */
public class getSocket {
    Socket socket;
    final String address = "192.168.56.1";
    final int host = 9999;

    public Socket getData(){
        try {
            socket = new Socket(address, host);
        } catch (IOException e) {
            e.printStackTrace();
        }
        return socket;
    }
}

安卓充当client端

server端与原生一样

安卓client端代码

SocketActivity.java

package com.example.task.socket;

import android.content.Intent;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.view.KeyEvent;
import android.widget.Button;
import android.widget.EditText;
import android.widget.ListView;
import android.widget.TextView;

import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.io.UnsupportedEncodingException;

import java.net.Socket;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;


import androidx.annotation.NonNull;
import androidx.appcompat.app.AppCompatActivity;
import androidx.appcompat.view.ActionMode;

import com.example.task.R;
import com.example.task.adapter.AppDetailListViewBaseAdapter;
import com.example.task.bean.Recode;
import com.example.task.bean.SocketUser;
import com.example.task.sqlite.dao.RecodeDao;


public class SocketActivity extends AppCompatActivity {
    //IP地址和端口号
    public static String IP_ADDRESS = "106.54.189.155";
//    public static String IP_ADDRESS = "192.168.51.235";
    public static int PORT = 9999;
    //三个控件
    EditText et_message = null;  //需要发送的内容
    Button bt_send = null;   //发送
    TextView tv_reply = null;   //服务器回复的消息
    //handler
    Handler handler = null;
    Socket socket = null;
    //socket连接状态
    Boolean isConnect;
    Boolean isReceive;

    RecodeDao recodeDao;

    ListView listView;
    List<Map<String,Object>> lists;

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

        listView = findViewById(R.id.ListView);
        listView.setSelection(listView.getBottom());
        recodeDao = new RecodeDao(this);
        lists = new ArrayList<>();

//        Button button = findViewById(R.id.Button);
//        button.setOnClickListener(new View.OnClickListener() {
//            @Override
//            public void onClick(View v) {
//                new RecodeDao(SocketActivity.this).delete();
//                tv_reply.setText("");
//            }
//        });

        Intent intent = getIntent();
        //从Intent中取出Bundle
        Bundle bundle = intent.getExtras();
        //获取FunPerson里的数据数据
        assert bundle != null;
        SocketUser user = (SocketUser)bundle.getSerializable("SocketUser");
        assert user != null;


        et_message = findViewById(R.id.et_message);
        bt_send = findViewById(R.id.bt_connect);
        tv_reply = findViewById(R.id.tv_reply);
//        recodeDao.delete();
        //数据库加载
        List<Recode> list = recodeDao.select();
        for(Recode recode:list){
            Map<String,Object> map = new HashMap();
            String str = recode.getData();
            System.out.println("str"+str);
            if(str.length() <= "2022-06-28 01:59:02:李四(student):".length()){
                continue;
            }
            String time = str.split(":")[0]+":"+str.split(":")[1]+":"+str.split(":")[2];
            String role = str.split(":")[3];
            String data = str.split(":")[4];


            if((user.getRoleName()+"("+user.getRole()+")").equals(role)){
                map.put("name2",role);
                map.put("data2",data);
                map.put("image2",R.drawable.img_wyu);
            }else{
                map.put("name1",role);
                map.put("data1",data);
                map.put("image1",R.drawable.img_wyu);
            }
//            System.out.println(time+role+data);
//            map.put("time",time);


            lists.add(map);
//            tv_reply.append(str);
//            tv_reply.append("\n");
        }
        if(lists.size() != 0){
            AppDetailListViewBaseAdapter adapter = new AppDetailListViewBaseAdapter(lists,this);
//        SimpleAdapter adapter = new SimpleAdapter(this,lists,R.layout.activity_socket_item,
//                new String[]{"image1","role1","data1","role2","data2","image2"},
////                new int[]{R.id.ImageView1,R.id.name1,R.id.data1});
//        new int[]{R.id.ImageView1,R.id.name1,R.id.data1,R.id.name2,R.id.data2,R.id.ImageView2});
            listView.setAdapter(adapter);
            listView.setSelection(listView.getBottom());
        }



        //todo 看这里啊喂!!!
        bt_send.setOnClickListener(v -> {
            new Send(et_message.getText().toString()).start();
            et_message.setText("");
//            System.out.println("已发送");
        });

        handler = new Handler(msg -> {
            Bundle b = msg.getData();  //获取消息中的Bundle对象
            String str = b.getString("data");  //获取键为data的字符串的值
//            String time = str.split(":")[0]+":"+str.split(":")[1]+":"+str.split(":")[2];
            String role = str.split(":")[3];
            String data = str.split(":")[4];

            Map<String,Object> map = new HashMap();
            if((user.getRoleName()+"("+user.getRole()+")").equals(role)){
                map.put("name2",role);
                map.put("data2",data);
                map.put("image2",R.drawable.img_wyu);
            }else{
                map.put("name1",role);
                map.put("data1",data);
                map.put("image1",R.drawable.img_wyu);
            }

            lists.add(map);

            AppDetailListViewBaseAdapter adapter2 = new AppDetailListViewBaseAdapter(lists,this);

//            SimpleAdapter adapter2 = new SimpleAdapter(this,lists,R.layout.activity_socket_item,
//                    new String[]{"image1","role1","data1","role2","data2","image2"},
////                new int[]{R.id.ImageView1,R.id.name1,R.id.data1});
//                    new int[]{R.id.ImageView1,R.id.name1,R.id.data1,R.id.name2,R.id.data2,R.id.ImageView2});
////        new int[]{R.id.ImageView1,R.id.name1,R.id.data1,R.id.name2,R.id.data2,R.id.ImageView2});
            listView.setAdapter(adapter2);
            listView.setSelection(listView.getBottom());

//            tv_reply.append(str);
//            tv_reply.append("\n");
            return false;
        });

        //连接服务器
        Connect connect = new Connect();
        connect.start();
        try {
            connect.join();
        } catch (InterruptedException e) {
            e.printStackTrace();
        }

        String roleName = user.getRoleName();
        String activityId = user.getActivityId();
        String role = user.getRole();
        //todo 看这里啊喂
        //role: 角色,用于分配不同权限,"student"和"teacher"两个值
        //roleName: 用户名,用于标识聊天室的人
        //activityName: 活动名称,用于分配不太聊天室
        new Send(role+"&"+roleName+"&"+activityId).start();

    }

    class Connect extends Thread{
        @Override
        public void run() {
            try {
                socket = new Socket(IP_ADDRESS,PORT);
            } catch (IOException e) {
                e.printStackTrace();
            }
            isConnect=true;
            isReceive=true;
            Receive receive = new Receive(socket);
            receive.start();
            System.out.println("----connected success----");
        }
    }
    class Receive extends Thread{

        private InputStream inputStream=null;
        Receive(Socket socket){
            //初始化输入流
            try {
                inputStream = socket.getInputStream();
            } catch (IOException e) {
                e.printStackTrace();
            }
        }

        @Override
        public void run() {
            while (isReceive){
                byte[] buffer = new byte[512];
                try {
                    inputStream.read(buffer);
                } catch (IOException e) {
                    e.printStackTrace();
                    break;
                }
                String str = null;
                try {
                    str = new String(buffer,"UTF-8").trim();
                } catch (UnsupportedEncodingException e) {
                    e.printStackTrace();
                }

                recodeDao.add(new Recode(str));

                Message msg = new Message();
                Bundle b = new Bundle();
                b.putString("data", str);
                msg.setData(b);
                System.out.println("已发送");
                handler.sendMessage(msg);
            }
            try {
                socket.close();
            } catch (IOException e) {
                e.printStackTrace();
            }

            finish();
        }
    }

    //新建一个子线程,实现socket通信
    class Send extends Thread {
        String message;

        public Send(String msg) {
            this.message = msg;
        }

        @Override
        public void run() {

            try {

                byte [] sendBuffer = null;

                //可替代为接收输入框的字符串.getBytes
                sendBuffer = message.getBytes("UTF-8");

                OutputStream outputStream = socket.getOutputStream();
                outputStream.write(sendBuffer);

                outputStream.flush();

            } catch (IOException e) {
                e.printStackTrace();
            }
        }
    }

    @Override
    public void onSupportActionModeFinished(@NonNull ActionMode mode) {
        super.onSupportActionModeFinished(mode);
        System.out.println("finish");
    }

    @Override
    public boolean onKeyDown(int keyCode, KeyEvent event) {
        // 是否触发按键为back键
        if (keyCode == KeyEvent.KEYCODE_BACK) {
            onBackPressed();
            System.out.println("点击返回键");
            outSocket();
            return true;
        } else {// 如果不是back键正常响应
            return super.onKeyDown(keyCode, event);
        }
    }

    //退出socket
    public void outSocket(){
        try {
            socket.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="com.example.task">
    <!-- 网络权限 -->
    <uses-permission android:name="android.permission.INTERNET" /> <!-- 相机权限 -->
    <uses-permission android:name="android.permission.CAMERA" /> <!-- 读文件权限 -->
    <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" /> <!-- 使用特性 -->
    <uses-feature android:name="android.hardware.camera" />
    <uses-feature android:name="android.hardware.camera.autofocus" />

    <application
        android:allowBackup="true"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:networkSecurityConfig="@xml/network_security_config"
        android:roundIcon="@mipmap/ic_launcher_round"
        android:supportsRtl="true"
        android:theme="@style/Theme.Task">

        <activity
            android:name=".ui.ShareActivity"
            android:exported="false"
            android:theme="@style/Base.Theme.AppCompat.Dialog"/>
        <activity
            android:name=".ui.ListMyActivityPutActivity"
            android:exported="false" />
        <activity
            android:name=".ui.ListStudentInfoActivity"
            android:exported="false" />
        <activity
            android:name=".ui.Student_MessageActivity"
            android:exported="false" />
        <activity
            android:name=".ui.PutActivityActivity"
            android:exported="false" />
        <activity
            android:name=".MainActivityTeacher"
            android:exported="true"
            android:label="HOME"
            android:theme="@style/Theme.Task.NoActionBar" />
        <activity
            android:name=".ui.UserActivityTeacher"
            android:exported="false"
            android:label="用户信息" />
        <activity
            android:name=".ui.Teacher_EvaluateActivity"
            android:exported="false"
            />
        <activity
            android:name=".ui.EvaluateActivity"
            android:exported="false" />
        <activity
            android:name=".ui.moreActivity"
            android:exported="false"
            android:label="敬请期待..."
            android:theme="@style/Base.Theme.AppCompat.Dialog" />
        <activity
            android:name=".ui.UserActivity"
            android:exported="false"
            android:label="用户信息" />
        <activity
            android:name=".ui.SignUpActivity"
            android:exported="false"
            android:theme="@style/Theme.Task.NoActionBar"/>
        <activity
            android:name=".ui.NoticesActivity"
            android:exported="false"
            android:label="公告" />
        <activity
            android:name=".ui.MenuActivity"
            android:exported="false"
            android:label="menu" />
        <activity
            android:name=".ui.FeedbackActivity"
            android:exported="false"
            android:label="反馈" />
        <activity
            android:name=".ui.MyActivityActivity"
            android:exported="false"
            android:label="我的活动"
            android:theme="@style/Theme.Task.NoActionBar"/>
        <activity
            android:name=".ui.My_historyActivity"
            android:exported="false"
            android:label="我的历史活动" />
        <activity
            android:name=".ui.All_historyActivity"
            android:exported="false"
            android:label="历史活动" />
        <activity
            android:name=".ui.CommentActivity"
            android:exported="false"
            android:label="评论区"
            android:theme="@style/ActivityEntryAnimation"/>
        <activity
            android:name=".ui.QrCode.QrCodeActivity"
            android:exported="false"
            android:label="活动签到" />
        <activity
            android:name=".ui.AllActivityActivity"
            android:exported="false"
            android:label="全部活动" />
        <activity
            android:name=".ui.All_EvaluateActivity"
            android:exported="false"
            android:label="活动详情"
            android:theme="@style/Theme.Task.NoActionBar"/>
        <activity
            android:name=".ui.AllActivity_new"
            android:exported="false"
            android:label="全部活动"
            android:theme="@style/Theme.Task.NoActionBar"/>
        <activity android:name=".ui.QrCode.Callback" />
        <activity
            android:name=".MainActivity"
            android:exported="true"
            android:label="HOME"
            android:theme="@style/Theme.Task.NoActionBar" />
        <activity
            android:name=".socket.SocketActivity"
            android:exported="true"
            />
        <activity
            android:name=".login.LoginActivity"
            android:label="登录">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

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

</manifest>

标签:java,socket,安卓,String,user,new,import,out
来源: https://www.cnblogs.com/bitterteaer/p/16543735.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有