Форум программистов, компьютерный форум CyberForum.ru

Программирование Android

Войти
Регистрация
Восстановить пароль
 
Terabaytus
9 / 0 / 0
Регистрация: 18.02.2014
Сообщений: 57
#1

Клиент падает при запуске - Android

13.06.2016, 08:40. Просмотров 250. Ответов 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;
    }
 
 
 
 
}
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Паблито
2063 / 1805 / 562
Регистрация: 12.05.2014
Сообщений: 6,432
Завершенные тесты: 1
13.06.2016, 09:53     Клиент падает при запуске #2
разрешение в манифесте есть?
XML
1
    <uses-permission android:name="android.permission.INTERNET" />
если есть - весь лог ошибки надо показывать
Terabaytus
9 / 0 / 0
Регистрация: 18.02.2014
Сообщений: 57
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)*
Паблито
2063 / 1805 / 562
Регистрация: 12.05.2014
Сообщений: 6,432
Завершенные тесты: 1
13.06.2016, 11:00     Клиент падает при запуске #4
192.168.56.1 это адрес чего?
Terabaytus
9 / 0 / 0
Регистрация: 18.02.2014
Сообщений: 57
13.06.2016, 11:07  [ТС]     Клиент падает при запуске #5
Удалённого сервера.
Паблито
2063 / 1805 / 562
Регистрация: 12.05.2014
Сообщений: 6,432
Завершенные тесты: 1
13.06.2016, 11:19     Клиент падает при запуске #6
там порт открыт?
проверить телнетом, будет работать?
Terabaytus
9 / 0 / 0
Регистрация: 18.02.2014
Сообщений: 57
13.06.2016, 11:27  [ТС]     Клиент падает при запуске #7
Да открыт, я проверял это код в eclipse всё приходит но вот Android работать не хочет.
Паблито
2063 / 1805 / 562
Регистрация: 12.05.2014
Сообщений: 6,432
Завершенные тесты: 1
13.06.2016, 11:37     Клиент падает при запуске #8
я бы проверял не на эмуляторе, а на реальном устройстве, потому что у эмулятора адрес вообще из другой подсети

+ по логу непонятно какая именно строка выдает NullPointerException
Terabaytus
9 / 0 / 0
Регистрация: 18.02.2014
Сообщений: 57
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
Паблито
2063 / 1805 / 562
Регистрация: 12.05.2014
Сообщений: 6,432
Завершенные тесты: 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"
Terabaytus
9 / 0 / 0
Регистрация: 18.02.2014
Сообщений: 57
13.06.2016, 12:08  [ТС]     Клиент падает при запуске #11
Версия 4.4 , разрешение есть, да на адрес я тоже думал, но как его правильно прописать ?
/storage/emulated/0/Pictures/Photo_and_Video/i.jpg где может быть ошибка в нём я его копировал с самого устройства ?
Паблито
2063 / 1805 / 562
Регистрация: 12.05.2014
Сообщений: 6,432
Завершенные тесты: 1
13.06.2016, 13:13     Клиент падает при запуске #12
а этот файл там есть точно?
в логе только эта ошибка, других нет?
Terabaytus
9 / 0 / 0
Регистрация: 18.02.2014
Сообщений: 57
14.06.2016, 10:12  [ТС]     Клиент падает при запуске #13
Добавлено через 20 часов 23 минуты
Задача решена, всё дело было в параметре

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

Java
1
protected Void doInBackground(Void... arg0)
petruchodd
90 / 90 / 8
Регистрация: 23.06.2009
Сообщений: 511
14.06.2016, 12:02     Клиент падает при запуске #14
Цитата Сообщение от Terabaytus Посмотреть сообщение
Сменил его и заработало
это никак не влияет на ошибку.
Terabaytus
9 / 0 / 0
Регистрация: 18.02.2014
Сообщений: 57
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)
petruchodd
90 / 90 / 8
Регистрация: 23.06.2009
Сообщений: 511
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.
Hank
49 / 40 / 3
Регистрация: 28.12.2011
Сообщений: 229
17.06.2016, 11:47     Клиент падает при запуске #17
Вы и сами можете определить в чем причина.
Цитата Сообщение от Terabaytus Посмотреть сообщение
Caused by: java.lang.NullPointerException
В месте где возникает исключение тормозните выполнение приложение в debug режиме и посмотрите что там именно null.
Если вы говорите, что падает на этой строке
Java
1
input.close();
, значит input null.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
17.06.2016, 13:35     Клиент падает при запуске
Еще ссылки по теме:

Android Падает скорость объектов на экране при нажатии
Программа падает при попытке задать текст TextView в диалоговом окне Android
При запуске карты тормозит Android
Android Ошибка при запуске VM VB
Ошибка при запуске Android

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

Или воспользуйтесь поиском по форуму:
Terabaytus
9 / 0 / 0
Регистрация: 18.02.2014
Сообщений: 57
17.06.2016, 13:35  [ТС]     Клиент падает при запуске #18
petruchodd, Hank, спасибо всё заработало дело было в порте.
Yandex
Объявления
17.06.2016, 13:35     Клиент падает при запуске
Ответ Создать тему
Опции темы

Текущее время: 21:09. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru