• B правой части каждого сообщения есть стрелки и . Не стесняйтесь оценивать ответы. Чтобы автору вопроса закрыть свой тикет, надо выбрать лучший ответ. Просто нажмите значок в правой части сообщения.

android java выполнение комманд

micerec

Green Team
29.11.2019
38
1
BIT
0
Есть проблема - я начал делать мини-чат на java для android, и собственно нужно, чтобы приложение могло выступать в качестве сервера и клиента одновременно ( вариант центрального сервера мне кажется сложнее, да и у меня железа для этого нет). Пока обсуждается клиент-сервер в локальной сети, (я умею пробрасывать порты, а вот знакомые, которым я это делаю, нет) и хотелось бы использовать VPN. Android - 7.1.2 и выше, однако это корректируется. Само собой, вам понадобится код, просто напишите, какой, я пока не понимаю, что здесь нужно. Как бы xml файлы нужны, но и Activity.java тоже. В общем, пишите какой код нужен, я выложу
 
Проблема решена, есть другая: при компиляции в AS есть ошибка с firebase: class file for com.firebase.client.Firebase not found. Я попробовал добавить в импорты - в com.firebase даже поля client нет. Прикрепляю MainActivity.java.
 
Код:
package com.example.chat;

import android.content.Intent;
import android.os.Bundle;
import android.text.format.DateFormat;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.ListView;
import android.widget.RelativeLayout;
import android.widget.TextView;

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

import com.firebase.ui.FirebaseListAdapter;
import com.firebase.ui.auth.AuthUI;
import com.google.android.gms.tasks.OnCompleteListener;
import com.google.android.gms.tasks.Task;
import com.google.android.material.snackbar.Snackbar;
import com.google.firebase.auth.FirebaseAuth;
import com.google.firebase.database.FirebaseDatabase;

public class MainActivity extends AppCompatActivity {
    private static int SIGN_IN_REQUEST_CODE = 1;
    RelativeLayout activity_main;
    Button button;

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

        activity_main = (RelativeLayout) findViewById(R.id.activity_main);
        button = (Button) findViewById(R.id.button2);
        button.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {

                EditText input = (EditText) findViewById(R.id.editText);
                FirebaseDatabase.getInstance().getReference().push().setValue(new Message(input.getText().toString(), FirebaseAuth.getInstance().getCurrentUser().getEmail()));
                input.setText("");
            }
        });

        if (FirebaseAuth.getInstance().getCurrentUser() == null) {
            startActivityForResult(AuthUI.getInstance().createSignInIntentBuilder().build(), SIGN_IN_REQUEST_CODE);
        }
        else {
            displayChat();
        }
    }

    private void displayChat() {

        ListView listmessages = (ListView) findViewById(R.id.listView);
        FirebaseListAdapter<Message> adapter = new FirebaseListAdapter<Message>(this, Message.class, R.layout.item, FirebaseDatabase.getInstance().getReference()) {


            @Override
            protected void populateView(View v, Message message) {

                TextView textmessage, author, timeMessage;
                textmessage = (TextView) findViewById(R.id.tvMessage);
                author = (TextView) findViewById(R.id.tvUser);
                timeMessage = (TextView) findViewById(R.id.tvTime);
                textmessage.setText(message.getTextMessage());
                author.setText(message.getAuthor());
                timeMessage.setText(DateFormat.format("dd-MM-yyyy (HH:mm:ss)", message.getTimeMessage()));
            }
        };
        listmessages.setAdapter(adapter);
    }
    @Override
    protected void onActivityResult (int requestCode, int resultCode, Intent data) {

        super.onActivityResult(requestCode, resultCode, data);
        if (requestCode == SIGN_IN_REQUEST_CODE) {
            if (resultCode == RESULT_OK) {
                Snackbar.make(activity_main, "Вход выполнен", Snackbar.LENGTH_SHORT).show();
                displayChat();
            }
            else {
                Snackbar.make(activity_main, "Вход не выполнен", Snackbar.LENGTH_SHORT).show();
                finish();
            }
        }
    }
    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        getMenuInflater().inflate(R.menu.menu, menu);
        return true;
    }
    public boolean onOptionsItemSelected(MenuItem item) {
        if (item.getItemId() == R.id.menu_signout) {
            AuthUI.getInstance().signOut(this).addOnCompleteListener(new OnCompleteListener<Void>() {
                @Override
                public void onComplete(@NonNull Task<Void> task) {
                    Snackbar.make(activity_main, "Выход выполнен.", Snackbar.LENGTH_SHORT).show();
                    finish();
                }
            });
        }
        return true;
    }
}
 
Вот
Код:
build.gradle
apply plugin: 'com.android.application'

android {
    compileSdkVersion 29
    buildToolsVersion "29.0.3"

    defaultConfig {
        applicationId "com.example.chat"
        minSdkVersion 21
        targetSdkVersion 29
        versionCode 1
        versionName "1.0"

        testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
    }

    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
        }
    }
}

dependencies {
    implementation fileTree(dir: "libs", include: ["*.jar"])
    implementation 'androidx.appcompat:appcompat:1.1.0'
    implementation 'androidx.constraintlayout:constraintlayout:1.1.3'
    implementation 'com.firebase:firebase-ui:0.1.0'
    implementation 'com.firebaseui:firebase-ui-auth:6.2.1'
    implementation 'com.firebaseui:firebase-ui:6.2.1'
    implementation 'com.firebaseui:firebase-ui-database:6.2.1'
    //noinspection GradleCompatible
    implementation 'com.android.support:design:28.0.0'
    implementation 'com.google.firebase:firebase-auth:19.3.1'
    implementation 'com.google.firebase:firebase-database:19.3.0'
    implementation 'com.firebase:firebase-client:2.2.4'
    testImplementation 'junit:junit:4.12'
    androidTestImplementation 'androidx.test.ext:junit:1.1.1'
    androidTestImplementation 'androidx.test.espresso:espresso-core:3.2.0'
}
Извините, спойлеры делать не умею
 
Проблема решена, есть другая
Настоятельно рекомендую создавать новую тему для каждого вопроса.
Извините, спойлеры делать не умею
1591728328559.png
 
Cпасибо, просто проблема все таки была по жаве, решил поменять вопрос. Надо было поставить отметку решено, а для этого нужен хотя бы 1 ответ как я понял. На будущее буду иметь в виду. Спасибо за совет.
 
Проблема решена, есть другая: при компиляции в AS есть ошибка с firebase: class file for com.firebase.client.Firebase not found. Я попробовал добавить в импорты - в com.firebase даже поля client нет. Прикрепляю MainActivity.java.
Проблема в том, что вы не подключили библиотеку firebase. Ее надо добавить в build.gradle (не всего проекта, а модуля). Я firebase никогда не пользовался, но нашел статью. Сайт очень хороший.
 
Проблема в том, что вы не подключили библиотеку firebase. Ее надо добавить в build.gradle (не всего проекта, а модуля). Я firebase никогда не пользовался, но нашел статью. Сайт очень хороший.
Там очень старые версии, и я попробовал добавить их - не работает.

Я так понял что ошибка не в отсутствии метода, а в отсутствии class файла или в конструкторе, но мне это ничего не дает. Я новичок в андроид, учусь.
 
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!