Форум программистов, компьютерный форум, киберфорум
Наши страницы
Программирование Android
Войти
Регистрация
Восстановить пароль
 
Terabaytus
9 / 0 / 1
Регистрация: 18.02.2014
Сообщений: 64
#1

Клиент падает при запуске - Программирование Android

13.06.2016, 08:40. Просмотров 354. Ответов 17
Метки нет (Все метки)

Добрый день подскажите пожалуйста, где может быть ошибка. Не как не получается запустить данный код на Android при нажатие кнопки "отправить" программа падает. Но если запустить данный код в eclipse всё отлично работает.


Вызов клиента в MainActivity

Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
public class MainActivity extends Activity {
 
@Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        createDirectory();
      
 
    }
 public void onClickSend(View view) throws FileNotFoundException {
 
Networking net = new Networking();
        net.execute();
}
 
}


Класс клиента


Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
public class Networking extends AsyncTask<Void,Void,Void> {
 
 
    static private ServerSocket server;//принимает соединение от Socket connection
    static private Socket client;//создаёт соединение ServerSocket 
 
    /*****************STREAM*****************/
    static private BufferedOutputStream output;
    static private BufferedInputStream input;
    /***************************************/
 
 
 
 
    @Override
    protected Void doInBackground(Void... params) {
 
// TODO Auto-generated method stub
        byte[] byteArray = new byte[8192];
        int in;
 
        try {
 
            client = new Socket("192.168.56.1", 60000);
            input = new BufferedInputStream(new FileInputStream("/storage/emulated/0/Pictures/Photo_and_Video/i.jpg"));
            output = new BufferedOutputStream(client.getOutputStream());
 
            while ((in = input.read(byteArray)) != -1){
                output.write(byteArray,0,in);
 
            }
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
 
        try {
            input.close();
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        try {
            output.close();
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
 
        return null;
    }
 
 
 
 
}

http://www.cyberforum.ru/android-dev/thread1908908.html
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
13.06.2016, 08:40
Я подобрал для вас темы с готовыми решениями и ответами на вопрос Клиент падает при запуске (Программирование Android):

Приложение падает при включении блютуз
Здравствуйте. Я первый раз работаю с блютуз в андроид. Запустил приложение, а...

Падает приложение при чтении настроек
Вот фрагмент моего кода: public void butCalculationElectric_Click(View v){...

Падает скорость объектов на экране при нажатии
Привет. У меня возникла проблема. Создал маленькую игру, На экране двигаются...

Программа падает при попытке задать текст TextView в диалоговом окне
Лог: java.lang.IllegalStateException: Could not execute method of the...

Ошибка при запуске AsyncTask при нажатии на пункт ActionBar
Здравствуйте, почему при нажатии на пункт Action Bar'а вылетает ошибка? ...

17
Pablito
2645 / 2127 / 726
Регистрация: 12.05.2014
Сообщений: 7,436
Завершенные тесты: 1
13.06.2016, 09:53 #2
разрешение в манифесте есть?
XML
1
    <uses-permission android:name="android.permission.INTERNET" />
если есть - весь лог ошибки надо показывать
0
Terabaytus
9 / 0 / 1
Регистрация: 18.02.2014
Сообщений: 64
13.06.2016, 10:50  [ТС] #3
Да есть.
Про лог забыл )
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
06-13 10:48:53.242 16334-16492/centre_v01 E/AndroidRuntime: FATAL EXCEPTION: AsyncTask #1
                                                                             Process: centre, PID: 16334
                                                                             java.lang.RuntimeException: An error occured while executing doInBackground()
                                                                                 at android.os.AsyncTask$3.done(AsyncTask.java:300)
                                                                                 at java.util.concurrent.FutureTask.finishCompletion(FutureTask.java:355)
                                                                                 at java.util.concurrent.FutureTask.setException(FutureTask.java:222)
                                                                                 at java.util.concurrent.FutureTask.run(FutureTask.java:242)
                                                                                 at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:231)
                                                                                 at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1112)
                                                                                 at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:587)
                                                                                 at java.lang.Thread.run(Thread.java:841)
                                                                              Caused by: java.lang.NullPointerException
                                                                                 at .centre.Networking.doInBackground(Networking.java:70)
                                                                                 at centre.Networking.doInBackground(Networking.java:19)
                                                                                 at android.os.AsyncTask$2.call(AsyncTask.java:288)
                                                                                 at java.util.concurrent.FutureTask.run(FutureTask.java:237)
                                                                                 at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:231)*
                                                                                 at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1112)*
                                                                                 at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:587)*
                                                                                 at java.lang.Thread.run(Thread.java:841)*
0
Pablito
2645 / 2127 / 726
Регистрация: 12.05.2014
Сообщений: 7,436
Завершенные тесты: 1
13.06.2016, 11:00 #4
192.168.56.1 это адрес чего?
0
Terabaytus
9 / 0 / 1
Регистрация: 18.02.2014
Сообщений: 64
13.06.2016, 11:07  [ТС] #5
Удалённого сервера.
0
Pablito
2645 / 2127 / 726
Регистрация: 12.05.2014
Сообщений: 7,436
Завершенные тесты: 1
13.06.2016, 11:19 #6
там порт открыт?
проверить телнетом, будет работать?
0
Terabaytus
9 / 0 / 1
Регистрация: 18.02.2014
Сообщений: 64
13.06.2016, 11:27  [ТС] #7
Да открыт, я проверял это код в eclipse всё приходит но вот Android работать не хочет.
0
Pablito
2645 / 2127 / 726
Регистрация: 12.05.2014
Сообщений: 7,436
Завершенные тесты: 1
13.06.2016, 11:37 #8
я бы проверял не на эмуляторе, а на реальном устройстве, потому что у эмулятора адрес вообще из другой подсети

+ по логу непонятно какая именно строка выдает NullPointerException
0
Terabaytus
9 / 0 / 1
Регистрация: 18.02.2014
Сообщений: 64
13.06.2016, 11:49  [ТС] #9
Эта проблема при работе реального устройства

на сколько я понимаю ругается он на эти строки
Java
1
2
at .centre.Networking.doInBackground(Networking.java:70)
at centre.Networking.doInBackground(Networking.java:19)
В коде они соответствуют
Java
1
2
3
4
public class Networking extends AsyncTask<Void,Void,Void> //19
 
 
 input.close();//70
0
Pablito
2645 / 2127 / 726
Регистрация: 12.05.2014
Сообщений: 7,436
Завершенные тесты: 1
13.06.2016, 12:00 #10
а какая версия андроида на устройстве, не 6.х ?

если ругается на input.close() значит надо проверить разрешение в манифесте на доступ в карте памяти
XML
1
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
если оно есть и версия андроида ниже 6 то надо проверять точно ли оно понимает такой путь "/storage/emulated/0/Pictures/Photo_and_Video/i.jpg"
0
Terabaytus
9 / 0 / 1
Регистрация: 18.02.2014
Сообщений: 64
13.06.2016, 12:08  [ТС] #11
Версия 4.4 , разрешение есть, да на адрес я тоже думал, но как его правильно прописать ?
/storage/emulated/0/Pictures/Photo_and_Video/i.jpg где может быть ошибка в нём я его копировал с самого устройства ?
0
Pablito
2645 / 2127 / 726
Регистрация: 12.05.2014
Сообщений: 7,436
Завершенные тесты: 1
13.06.2016, 13:13 #12
а этот файл там есть точно?
в логе только эта ошибка, других нет?
0
Terabaytus
9 / 0 / 1
Регистрация: 18.02.2014
Сообщений: 64
14.06.2016, 10:12  [ТС] #13
Добавлено через 20 часов 23 минуты
Задача решена, всё дело было в параметре

Java
1
protected Void doInBackground(Void... params)
Сменил его и заработало

Java
1
protected Void doInBackground(Void... arg0)
0
petruchodd
123 / 120 / 17
Регистрация: 23.06.2009
Сообщений: 648
14.06.2016, 12:02 #14
Цитата Сообщение от Terabaytus Посмотреть сообщение
Сменил его и заработало
это никак не влияет на ошибку.
0
Terabaytus
9 / 0 / 1
Регистрация: 18.02.2014
Сообщений: 64
17.06.2016, 10:33  [ТС] #15
petruchodd, да походу никак приложение опять падает подскажите пожалуйста в чем может быть причина

Код клиента

Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
public class MainActivity extends Activity {
 
 
static private ServerSocket server;//принимает соединение от Socket connection
    static private Socket client;//создаёт соединение ServerSocket так же может соедениться с channel socket
 
    /*****************STREAM*****************/
    static private BufferedOutputStream output;
    static private BufferedInputStream input;
    /***************************************/
 
 
 
 
 /**********************************ЗАГРУЗЧИК**********************************/
    public void onClickSend(View view) throws FileNotFoundException {
 
        Networking net =new Networking();
        net.execute();
 
    }
 
 
 
public class Networking extends AsyncTask<Void,Integer,Void> {
 
 
 
        ProgressBar progressBar;
 
 
 
 
 
        @Override
        protected void onPreExecute() {
            super.onPreExecute();
 
            progressBar = (ProgressBar) findViewById(R.id.progressBar);
            progressBar.setVisibility(ProgressBar.INVISIBLE);
            progressBar.setVisibility(ProgressBar.VISIBLE);// запускаем длительную операцию
 
                Toast toast = Toast.makeText(getApplicationContext(),//создаем и отображаем текстовое уведомление "Загрузка"
                        R.string.message,
                        Toast.LENGTH_LONG);
                toast.setGravity(Gravity.CENTER, 0, 0);
                toast.show();
 
 
        }
 
 
 
 
        @Override
        protected Void doInBackground(Void... arg0) {
 
// TODO Auto-generated method stub
            byte[] byteArray = new byte[8192];
            int in;
 
            try {
 
                client = new Socket("192.168.1.138", 60000);
                input = new BufferedInputStream(new FileInputStream("/storage/emulated/0/Pictures/Photo_and_Video/i.jpg"));
                output = new BufferedOutputStream(client.getOutputStream());
 
                while ((in = input.read(byteArray)) != -1){
                    output.write(byteArray,0,in);
 
                }
            } catch (IOException e) {
                // TODO Auto-generated catch block
                Log.d(TAG, "Message", e);
            }
 
            try {
                input.close();
            } catch (IOException e) {
                // TODO Auto-generated catch block
                Log.d(TAG, "Message", e);
            }
            try {
                output.close();
            } catch (IOException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
 
            return null;
        }
 
        protected void onPostExecute(Void result) {
           super.onPostExecute(result);
 
            progressBar.setVisibility(ProgressBar.INVISIBLE);
            
            Toast toast = Toast.makeText(getApplicationContext(),//создаем и отображаем текстовое уведомление
                    R.string.message1,
                    Toast.LENGTH_LONG);
            toast.setGravity(Gravity.CENTER, 0, 0);
            toast.show();
 
 
        }
 
    }
 
}


Лог ошибки


в строке 201 находиться input.close();
в строке 148 находиться public class Networking extends AsyncTask<Void,Integer,Void>



Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
06-17 10:00:13.488 30973-31069/ru.centre_v01 E/AndroidRuntime: FATAL EXCEPTION: AsyncTask #1
 Process: ru.centre_v01, PID: 30973
 java.lang.RuntimeException: An error occured while executing doInBackground()
 at android.os.AsyncTask$3.done(AsyncTask.java:300)
 at java.util.concurrent.FutureTask.finishCompletion(FutureTask.java:355)
 at java.util.concurrent.FutureTask.setException(FutureTask.java:222)
 at java.util.concurrent.FutureTask.run(FutureTask.java:242)
 at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:231)
 at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1112)
 at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:587)
                           at java.lang.Thread.run(Thread.java:841)
                           Caused by: java.lang.NullPointerException
at ru.centre_v01.MainActivity$Networking.doInBackground(MainActivity.java:201)
at ru.centre_v01.MainActivity$Networking.doInBackground(MainActivity.java:148)
                           at android.os.AsyncTask$2.call(AsyncTask.java:288)
                           at java.util.concurrent.FutureTask.run(FutureTask.java:237)
                           at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:231) 
                         at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1112) 
                        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:587) 
                         at java.lang.Thread.run(Thread.java:841)
0
petruchodd
123 / 120 / 17
Регистрация: 23.06.2009
Сообщений: 648
17.06.2016, 11:43 #16
проверь логом
Java
1
2
 input = new BufferedInputStream(new FileInputStream("/storage/emulated/0/Pictures/Photo_and_Video/i.jpg"));
          Log.e("test", "input = "+input);
возможно input сходу идет как null.
0
Hank
63 / 54 / 4
Регистрация: 28.12.2011
Сообщений: 297
17.06.2016, 11:47 #17
Вы и сами можете определить в чем причина.
Цитата Сообщение от Terabaytus Посмотреть сообщение
Caused by: java.lang.NullPointerException
В месте где возникает исключение тормозните выполнение приложение в debug режиме и посмотрите что там именно null.
Если вы говорите, что падает на этой строке
Java
1
input.close();
, значит input null.
1
Terabaytus
9 / 0 / 1
Регистрация: 18.02.2014
Сообщений: 64
17.06.2016, 13:35  [ТС] #18
petruchodd, Hank, спасибо всё заработало дело было в порте.
0
17.06.2016, 13:35
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
17.06.2016, 13:35
Привет! Вот еще темы с решениями:

Ошибка при запуске VM VB
помогите пожалуйста у меня внезапно перестала запускаться оракловская виртуалка...

Ошибка при запуске
Здравствуйте. Возникает ошибка при вызове getLastKnownLocation.

Ошибка при запуске
При запуске приложения выводит ошибку: &quot;В приложении &quot;Saint switcher&quot; произошла...

GC при запуске приложение
При запуске приложения в логе вижу череду сообщений о работе GC 11-28...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
18
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru