Форум программистов, компьютерный форум, киберфорум
Наши страницы
Программирование Android
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.75/4: Рейтинг темы: голосов - 4, средняя оценка - 4.75
марсль
0 / 0 / 0
Регистрация: 09.05.2013
Сообщений: 18
#1

Возникает ошибка при попытке регистрации

28.09.2014, 11:45. Просмотров 644. Ответов 7
Метки нет (Все метки)

Здравствуйте, недавно начал изучать андроид, и его взаимодействие с php скриптом, а также БД MySQL.
В интернете нашел урок по созданию регистрации и авторизации вот на этом сайте.
Выполнил пошагово все действия, но у меня почему то не работает данный скрипт, при попытке регистрации приложение сворачивается, хотя весь код и все что написано я сделал.
Там также есть возможность скачать приложение, которое сделал сам автор. Я скачал его, указал путь к файлу php на своем сервере, как указанно в уроке, и оно работает.
Когда же я пытаюсь создать такое же приложение в новом проекте возникает ошибка. Не могу понять из-за чего .
Может кто- нибудь уже сталкивался с этим и знает в чем проблема? Буду благодарен за помощь).
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
28.09.2014, 11:45
Ответы с готовыми решениями:

Возникает ошибка при запросе
package com.example.ks; /** * Created by Denis on 08.09.2016. */ import...

Возникает ошибка при builder.parse
Возникает ошибка 02-02 17:13:38.465: D/tagmy(32259): error...

При переходе между активити возникает ошибка
Здравствуйте, уважаемые программисты! Не могли бы вы мне помочь? Дело в том,...

Ошибка при попытке парсить JSON
Здравствуйте. Разбираюсь с Retrofit, возникает ошибка когда в строке которую...

Ошибка при попытке скрыть элемент
Здравствуйте. Помогите понять в чем проблема или ошибка. Нужно скрыть элемент...

7
dubok79
324 / 122 / 10
Регистрация: 01.11.2012
Сообщений: 586
28.09.2014, 15:48 #2
Ну хотя бы код самой ошибки не помешал бы...
0
марсль
0 / 0 / 0
Регистрация: 09.05.2013
Сообщений: 18
28.09.2014, 16:51  [ТС] #3
09-28 12:26:33.099 1236-1236/com.Yoola.app E/AndroidRuntime﹕ FATAL EXCEPTION: main
android.os.NetworkOnMainThreadException
at android.os.StrictMode$AndroidBlockGuardPolicy.onNetwork(StrictMode.java:1133)
at java.net.InetAddress.lookupHostByName(InetAddress.java:385)
at java.net.InetAddress.getAllByNameImpl(InetAddress.java:236)
at java.net.InetAddress.getAllByName(InetAddress.java:214)
at org.apache.http.impl.conn.DefaultClientConnectionOperator.openConnection(DefaultClientConnectionOperator.java:137)
at org.apache.http.impl.conn.AbstractPoolEntry.open(AbstractPoolEntry.java:164)
at org.apache.http.impl.conn.AbstractPooledConnAdapter.open(AbstractPooledConnAdapter.java:119)
at org.apache.http.impl.client.DefaultRequestDirector.execute(DefaultRequestDirector.java:360)
at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:555)
at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:487)
at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:465)
at com.Yoola.app.library.JSONParser.getJSONFromUrl(JSONParser.java:42)
at com.Yoola.app.library.UserFunctions.registerUser(UserFunctions.java:60)
at com.Yoola.app.RegisterActivity$1.onClick(RegisterActivity.java:61)
at android.view.View.performClick(View.java:4240)
at android.view.View$PerformClick.run(View.java:17721)
at android.os.Handler.handleCallback(Handler.java:730)
at android.os.Handler.dispatchMessage(Handler.java:92)
at android.os.Looper.loop(Looper.java:137)
at android.app.ActivityThread.main(ActivityThread.java:5103)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:525)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:737)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553)
at dalvik.system.NativeStart.main(Native Method)

Добавлено через 23 минуты
dubok79, Весь код вставлял тот же что и на сайте, поставил только свою url ссылку на регистрацию , php скрипты и БД также создал на сервере. Не могу понять почему когда я использую код автора, у меня не выходит ошибка и все работает, а когда создаю все это в своем приложении выдает ошибку
0
YuraAAA
1578 / 1319 / 282
Регистрация: 25.10.2009
Сообщений: 3,436
Записей в блоге: 2
29.09.2014, 10:22 #4
Цитата Сообщение от марсль Посмотреть сообщение
android.os.NetworkOnMainThreadException
Ну нельзя лезть в сеть из main потока. Используйте Thread/AsyncTask/Loader. Примеров найдёте миллион.
2
марсль
0 / 0 / 0
Регистрация: 09.05.2013
Сообщений: 18
29.09.2014, 19:37  [ТС] #5
Но у автора код почему то работает, оно сделано с использованием того же кода, если залезть в код и посмотреть. Но спасибо попробую посмотреть может поможет.
0
YuraAAA
1578 / 1319 / 282
Регистрация: 25.10.2009
Сообщений: 3,436
Записей в блоге: 2
29.09.2014, 21:00 #6
марсль, эту защиту вели по-моему с 3.0+ android. Код будет работать на старых устройствах.
1
марсль
0 / 0 / 0
Регистрация: 09.05.2013
Сообщений: 18
30.09.2014, 19:25  [ТС] #7
А вы не можете привести как это будет выглядеть в данном контексте кода AsyncTask:

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
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
/**
 * Author: Ravi Tamada
 * URL: [url]www.androidhive.info[/url]
 * twitter: [url]http://twitter.com/ravitamada[/url]
 * */
package com.Yoola.app;
 
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
 
import android.os.Handler;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;
 
import com.Yoola.app.library.DatabaseHandler;
import com.Yoola.app.library.UserFunctions;
 
 
 
import org.json.JSONException;
import org.json.JSONObject;
 
public class RegisterActivity extends Activity {
    Button btnRegister;
    Button btnLinkToLogin;
    EditText inputSurname;
    EditText inputFullName;
    EditText inputEmail;
    EditText inputPassword;
    TextView registerErrorMsg;
    
    // JSON Response node names
    private static String KEY_SUCCESS = "success";
    private static String KEY_ERROR = "error";
    private static String KEY_ERROR_MSG = "error_msg";
    private static String KEY_UID = "uid";
    private static String KEY_NAME = "name";
    private static String KEY_SURNAME = "surname";
    private static String KEY_EMAIL = "email";
    private static String KEY_CREATED_AT = "created_at";
 
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.register);
 
        // Importing all assets like buttons, text fields
        inputFullName = (EditText) findViewById(R.id.registerName);
        inputSurname =(EditText) findViewById(R.id.registerSurname);
        inputEmail = (EditText) findViewById(R.id.registerEmail);
        inputPassword = (EditText) findViewById(R.id.registerPassword);
        btnRegister = (Button) findViewById(R.id.btnRegister);
        btnLinkToLogin = (Button) findViewById(R.id.btnLinkToLoginScreen);
        registerErrorMsg = (TextView) findViewById(R.id.register_error);
        
        // Register Button Click event
        btnRegister.setOnClickListener(new View.OnClickListener() {
 
            public void onClick(View view) {
 
 
                String name = inputFullName.getText().toString();
                String surname = inputSurname.getText().toString();
                String email = inputEmail.getText().toString();
                String password = inputPassword.getText().toString();
                UserFunctions userFunction = new UserFunctions();
                JSONObject json = userFunction.registerUser(name,surname, email, password);
                
                // check for login response
                try {
                    if (json.getString(KEY_SUCCESS) != null) {
                        registerErrorMsg.setText("");
                        String res = json.getString(KEY_SUCCESS); 
                        if(Integer.parseInt(res) == 1){
                            // user successfully registred
                            // Store user details in SQLite Database
                            DatabaseHandler db = new DatabaseHandler(getApplicationContext());
                            JSONObject json_user = json.getJSONObject("user");
                            
                            // Clear all previous data in database
                            userFunction.logoutUser(getApplicationContext());
                            db.addUser(json_user.getString(KEY_NAME), json_user.getString(KEY_SURNAME), json_user.getString(KEY_EMAIL), json.getString(KEY_UID), json_user.getString(KEY_CREATED_AT));
                            // Launch Dashboard Screen
                            Intent dashboard = new Intent(getApplicationContext(), DashboardActivity.class);
                            // Close all views before launching Dashboard
                            dashboard.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
                            startActivity(dashboard);
                            // Close Registration Screen
                            finish();
                        }else{
                            // Error in registration
                            registerErrorMsg.setText("Error occured in registration");
                        }
                    }
                } catch (JSONException e) {
                    e.printStackTrace();
                }
            }
        });
 
        // Этот метод вызывается из главного потока GUI.
        private void mainProcessing() {
            // Здесь трудоемкие задачи переносятся в дочерний поток.
            Thread thread = new Thread(null, doBackgroundThreadProcessing,
                    "Background");
            thread.start();
        }
// Объект Runnable, который запускает метод для выполнения задач
// в фоновом режиме.
        private Runnable doBackgroundThreadProcessing = new Runnable() {
            public void run() {
                backgroundThreadProcessing();
            }
        };
// Метод, который выполняет какие-то действия в фоновом режиме.
        private void backgroundThreadProcessing() {
            [ ... Трудоемкие операции ... ]
        }
 
        // Link to Login Screen
        btnLinkToLogin.setOnClickListener(new View.OnClickListener() {
 
            public void onClick(View view) {
                Intent i = new Intent(getApplicationContext(),
                        LoginActivity.class);
                startActivity(i);
                // Close Registration View
                finish();
            }
        });
    }
}
Как я понял его нужно поставить на кнопку регистрации?
0
марсль
0 / 0 / 0
Регистрация: 09.05.2013
Сообщений: 18
02.10.2014, 17:57  [ТС] #8
YuraAAA, не могли бы вы показать начало, как мне запаковать отправку данных в AsyncTask и поставить его на кнопку?
0
02.10.2014, 17:57
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
02.10.2014, 17:57

Ошибка при попытке подключится к камере на эмуляторе AS
Как правильно тестировать камеру на эмуляторе AS? Я поставил для back камеры...

Ошибка синхронизации Gradle при попытке создания проекта Android в IntelliJ IDEA
Всем доброго времени суток. Собственно проблема с которой столкнулся в...

Приложение крашится при попытке инициализировать searchview
Кто может подсказать, что я делаю не правильно Приложение рушится на попытке...


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

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

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