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

Удалённая база данных MySQL, php, android - Android

Войти
Регистрация
Восстановить пароль
Другие темы раздела
Android Переход в Play Google из приложения http://www.cyberforum.ru/android-dev/thread860355.html
Во многих приложениях видел функции перехода из приложения в Play Google для покупки платной версии. Возник вопрос, как это сделать? В общем нужно чтобы на нажатие кнопки(например: "Убрать рекламу") открывалась страничка с платной версией моего приложения на Play Google. Надеюсь на вашу помощь.
Android Подскажите, как лучше сделать (справочник организаций) Здравствуйте уважаемые! В программировании для Android я новичок. Заинтересовал вопрос разработки справочника организаций. Создал массив сфер деятельности (cat.xml) <?xml version="1.0" encoding="UTF-8"?> <resources> <string-array name="cat"> <item>Машиностроение и металлообработка</item> <item>Черная и цветная металлургия</item> <item>Горнодобывающая промышленность</item>... http://www.cyberforum.ru/android-dev/thread860254.html
Центровка по текущей локации в GoogleMap Android
А скажите, вот у меня есть код: @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); requestWindowFeature(Window.FEATURE_NO_TITLE); setContentView(R.layout.map); FragmentManager myFragmentManager = getSupportFragmentManager(); SupportMapFragment mySupportMapFragment
Android как на андройде реализовать эту формулу?
была бы она обычная я бы сам все делал но тут такое дело, что в этой формуле есть квадратные скобки и они меня смущают
Android Не получается Drag & Drop http://www.cyberforum.ru/android-dev/thread859773.html
Здравствуйте! Я тренируюсь с использование MotionEvent, и решил сделать программу для перетаскивания картинки самостоятельно. Вообщем я смог написать код, а когда запустил на устройстве, то работа меня не обрадовала: картинка передвигалась, но она отставала от пальца и прыгала постоянно через каждый такт в начало координат, а потом снова в своё отстающее от пальца, но движущееся, положение. ...
Android ContentObserver, информация об SMS Пытаюсь прочитать отправленные sms сообщения. Но получается, что телефон делает несколько попыток и все они приходят ко мне. Как определить, что это повторная попытка отправить sms ? подробнее

Показать сообщение отдельно
8VAid8
12 / 12 / 2
Регистрация: 21.04.2012
Сообщений: 190
28.05.2013, 20:44  [ТС]     Удалённая база данных MySQL, php, android
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
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
package com.example.med;
 
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
 
import org.apache.http.HttpEntity;
import org.apache.http.HttpResponse;
import org.apache.http.client.HttpClient;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.impl.client.DefaultHttpClient;
import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;
 
import android.app.Activity;
import android.content.Intent;
import android.net.ParseException;
import android.os.AsyncTask;
import android.os.Bundle;
import android.util.Log;
import android.view.Menu;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;
 
public class VizovActivity extends Activity implements OnClickListener {
    
    //----Info-----------
    String PFname;
    String PSname;
    String PLname;
    int[] PIDmas = new int[100];
    String PatientFIO;
    
    String AdressStreet;
    String AdressNum;
    String Pphone;
    String Contr;
    String Npolis;
    String Birthday;
    //------------------------------
    private TaskNamesPatients taskp;
    int j = 0;
    Button buttonFound;
    EditText editFname, editSname, editLname, editAdressStreet, editAdressNum; 
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_vizov);
        buttonFound = (Button) findViewById(R.id.buttonPersonal);
        buttonFound.setOnClickListener(this);
        
        editFname = (EditText) findViewById(R.id.editFname);
        editSname = (EditText) findViewById(R.id.editSname);
        editLname = (EditText) findViewById(R.id.editLname);
        
        editAdressStreet = (EditText) findViewById(R.id.editAdressStreet);
        editAdressNum = (EditText) findViewById(R.id.editAdressNum);
        
    }
 
    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        // Inflate the menu; this adds items to the action bar if it is present.
        getMenuInflater().inflate(R.menu.vizov, menu);
        return true;
    }
 
    @Override
    public void onClick(View v) {
 
        if (v.getId() == R.id.buttonPersonal) {
            try{
                taskp = new TaskNamesPatients();
                taskp.execute();
            }
            catch (Exception e) {
               Log.e(TAG, "Error:" + e.toString(), e);
           }
        } 
        else {
        }
    }
    //-------получение имён пациентов--------------------------------------------
 
    //-----------------------------
    
        private static final String TAG = VizovActivity.class.getName();
         
        String HOST = "http://medplus.hut4.ru/search_patient.php?search";
        
        private static final String ENCODING = "utf8";
        
   
       public class TaskNamesPatients extends AsyncTask<Void, Void, Void> {           
           public static final String KEY_FNAME = "PFname";
           public static final String KEY_SNAME = "PSname";
           public static final String KEY_LNAME = "PLname";
           public static final String KEY_ID = "PID";
                      
           private JSONArray jsonArray;
           private String webData = null;
           private StringBuilder sb = null;
           private Throwable exception;
     
           @Override
           protected Void doInBackground(Void... params) {
               HttpEntity entity = null;
               try {
                   HttpClient httpclient = new DefaultHttpClient();
                   HttpPost httppost = new HttpPost(HOST+"&Fname="+PFname+"&Sname="+PSname+
            "&Lname="+PLname+"&AdressStreet="+AdressStreet+"&AdressNum="+AdressNum);
                   HttpResponse response = httpclient.execute(httppost);
                   entity = response.getEntity();              
               } catch (Exception e) {
                   Log.e(TAG, "Error in http connection" + e.toString(), e);
                   exception = e;
                   return null;
               }
               BufferedReader reader = null;
               InputStream is = null;
               try {
                   is = entity.getContent();
                   reader = new BufferedReader(
                           new InputStreamReader(is, ENCODING), 8);
                   sb = new StringBuilder();
    
                   String line = null;
                   while ((line = reader.readLine()) != null) {
                       sb.append(line + "\n");
                   }
                   
                   webData = sb.toString();
               } catch (Exception e) {
                   Log.e(TAG, "Error converting result " + e.toString(), e);
                   exception = e;
                   return null;
               } finally {
                   try {
                       reader.close();
                       is.close();
                   } catch (IOException e) {
                       Log.e(TAG, "Unexpected Error" + e.toString(), e);
                   }
               }
    
               try {
                   jsonArray = new JSONArray(webData);
                   JSONObject jsonData = null; 
                   for (int i = 0; i < jsonArray.length(); i++) {
                       jsonData = jsonArray.getJSONObject(i);
                       PFname= jsonData.getString(KEY_FNAME);
                       PSname= jsonData.getString(KEY_SNAME);
                       PLname= jsonData.getString(KEY_LNAME);
                       PIDmas[j] = jsonData.getInt(KEY_ID);j++;
                       PatientFIO = PatientFIO + PFname + " " + PSname + " " + PLname + ",";
                   }
               } catch (JSONException e) {
                   Log.e(TAG, "Bad json " + e.toString(), e);
                   exception = e;
                   return null;
               } catch (ParseException e) {
                   Log.e(TAG, "Error converting result " + e.toString(), e);
                   exception = e;
                   return null;
               }
               return null;
           }
           
           @Override
           protected void onPreExecute()
           {
                //----------------------------------------
                PFname = editFname.getText().toString();
                PSname = editSname.getText().toString();
                PLname = editLname.getText().toString();
                
                AdressStreet = editAdressStreet.getText().toString();
                
                if(!editAdressNum.getText().toString().equals(null)&&!editAdressNum.getText().toString().equals("")&&
                        !editAdressNum.getText().toString().equals(" ")){
                AdressNum =editAdressNum.getText().toString();
                }
                else AdressNum = "1";
                //-----
               PatientFIO = "";
           }
           @Override
           protected void onPostExecute(Void result) {
               if (exception != null) {
                   Toast.makeText(VizovActivity.this,
                           "Error while getting data from web server",
                           Toast.LENGTH_SHORT).show();
               } 
                //----------------------------------------
            Intent intent = new Intent(VizovActivity.this, FoundActivity.class);
            intent.putExtra("PIDmas", PIDmas);
            intent.putExtra("PatientFIO", PatientFIO);
            startActivity(intent);
           }
       }
       //-----------------------------------------------------------------------------
}
Этот класс должен осуществлять поиск по бд с помощью скрипта:
PHP
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
<?php 
mysql_connect("db","bd","password");
mysql_select_db("bd"); 
 
mysql_set_charset( 'utf8' );                    
 
if (isset($_GET['search']))
{
$Fname = iconv('cp1251','utf-8',$_GET['Fname']);
$Sname = iconv('cp1251','utf-8',$_GET['Sname']);
$Lname = iconv('cp1251','utf-8',$_GET['Lname']);
 
$AdressStreet = iconv('cp1251','utf-8',$_GET['AdressStreet']);
$AdressNum    = iconv('cp1251','utf-8',$_GET['AdressNum']);
 
$sql=mysql_query(
"select * from Patients
where 
   (LOWER(PFname) = LOWER('".$Fname."')
or LOWER(PSname) = LOWER('".$Sname."')
or LOWER(PLname) = LOWER('".$Lname."'))
 
or (LOWER(AdressStreet) = LOWER('".$AdressStreet."')
or AdressNum = '".$AdressNum."')"); 
   
while($row=mysql_fetch_assoc($sql))             
$output[]=$row; 
print json_fix_cyr(json_encode($output));
}
    
mysql_close();
 
 
function json_fix_cyr($json_str) { 
 $cyr_chars = array ( 
 '\u0430' => 'а', '\u0410' => 'А', 
 '\u0431' => 'б', '\u0411' => 'Б', 
 '\u0432' => 'в', '\u0412' => 'В', 
 '\u0433' => 'г', '\u0413' => 'Г', 
 '\u0434' => 'д', '\u0414' => 'Д', 
 '\u0435' => 'е', '\u0415' => 'Е', 
 '\u0451' => 'ё', '\u0401' => 'Ё', 
 '\u0436' => 'ж', '\u0416' => 'Ж', 
 '\u0437' => 'з', '\u0417' => 'З', 
 '\u0438' => 'и', '\u0418' => 'И', 
 '\u0439' => 'й', '\u0419' => 'Й', 
 '\u043a' => 'к', '\u041a' => 'К', 
 '\u043b' => 'л', '\u041b' => 'Л', 
 '\u043c' => 'м', '\u041c' => 'М', 
 '\u043d' => 'н', '\u041d' => 'Н', 
 '\u043e' => 'о', '\u041e' => 'О', 
 '\u043f' => 'п', '\u041f' => 'П', 
 '\u0440' => 'р', '\u0420' => 'Р', 
 '\u0441' => 'с', '\u0421' => 'С', 
 '\u0442' => 'т', '\u0422' => 'Т', 
 '\u0443' => 'у', '\u0423' => 'У', 
 '\u0444' => 'ф', '\u0424' => 'Ф', 
 '\u0445' => 'х', '\u0425' => 'Х', 
 '\u0446' => 'ц', '\u0426' => 'Ц', 
 '\u0447' => 'ч', '\u0427' => 'Ч', 
 '\u0448' => 'ш', '\u0428' => 'Ш', 
 '\u0449' => 'щ', '\u0429' => 'Щ', 
 '\u044a' => 'ъ', '\u042a' => 'Ъ', 
 '\u044b' => 'ы', '\u042b' => 'Ы', 
 '\u044c' => 'ь', '\u042c' => 'Ь', 
 '\u044d' => 'э', '\u042d' => 'Э', 
 '\u044e' => 'ю', '\u042e' => 'Ю', 
 '\u044f' => 'я', '\u042f' => 'Я', 
 
 '\r' => '', 
 '\n' => '<br />', 
 '\t' => '' 
 ); 
 
 foreach ($cyr_chars as $cyr_char_key => $cyr_char) { 
 $json_str = str_replace($cyr_char_key, $cyr_char, $json_str); 
 } 
 return $json_str; 
}
?>
При английских значениях поля editFname и пустых остальных работает нормально, а при русских, если ввести в поле editAdressNum значение, не совпадающее с соответствующим текущим значением editFname или оставить пустым, то вылетает ошибка:
Кликните здесь для просмотра всего текста
05-27 17:14:57.731: E/com.example.med.VizovActivity(3379): Bad json org.json.JSONException: Value null<!-- of type java.lang.String cannot be converted to JSONArray
05-27 17:14:57.731: E/com.example.med.VizovActivity(3379): org.json.JSONException: Value null<!-- of type java.lang.String cannot be converted to JSONArray
05-27 17:14:57.731: E/com.example.med.VizovActivity(3379): at org.json.JSON.typeMismatch(JSON.java:111)
05-27 17:14:57.731: E/com.example.med.VizovActivity(3379): at org.json.JSONArray.<init>(JSONArray.java:91)
05-27 17:14:57.731: E/com.example.med.VizovActivity(3379): at org.json.JSONArray.<init>(JSONArray.java:103)
05-27 17:14:57.731: E/com.example.med.VizovActivity(3379): at com.example.med.VizovActivity$TaskNamesPatients.doInBackground(VizovActivity.java:152)
05-27 17:14:57.731: E/com.example.med.VizovActivity(3379): at com.example.med.VizovActivity$TaskNamesPatients.doInBackground(VizovActivity.java:1)
05-27 17:14:57.731: E/com.example.med.VizovActivity(3379): at android.os.AsyncTask$2.call(AsyncTask.java:287)
05-27 17:14:57.731: E/com.example.med.VizovActivity(3379): at java.util.concurrent.FutureTask.run(FutureTask.java:234)
05-27 17:14:57.731: E/com.example.med.VizovActivity(3379): at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:230)
05-27 17:14:57.731: E/com.example.med.VizovActivity(3379): at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1080)
05-27 17:14:57.731: E/com.example.med.VizovActivity(3379): at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:573)
05-27 17:14:57.731: E/com.example.med.VizovActivity(3379): at java.lang.Thread.run(Thread.java:856)

В скрипте кодировка utf8.

Добавлено через 21 час 57 минут
Думал, что возможна ошибка была из за возвращаемого html вместе с json. Исправил. Не помогло.
Какие возможны варианты?

Добавлено через 1 час 27 минут
Решено. Дело было в кодировке. В скрипте шла конвертация
Java
1
$Lname = iconv('cp1251','utf-8',$_GET['Lname']);
Без неё не выводилось в браузере, а с ней в андроиде были ошибки. Пришлось ампутировать.
 
Текущее время: 07:10. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru