• Как сделать так чтобы приложение автоматом отправляло смс-сообщения на сервер?

    gadfi
    @gadfi
    https://gamega.org
    1. смс слушаем ресивером, чтобы оно обрабатывалось раньше чем приложением по умолчанию, ставим приоритет повыше
    <receiver android:name=".sms.SmsReceiver" >
                <intent-filter android:priority="1000" >
                    <action android:name="android.provider.Telephony.SMS_RECEIVED" />
                </intent-filter>
            </receiver>


    2. читаем номер и текст смс, если совпадает с нужным то шлем в новом потоке информацию на сервер
    @Override
        public void onReceive(Context context, Intent intent) {
            if (intent != null
                    && intent.getAction() != null
                    && ACTION.compareToIgnoreCase(intent.getAction()) == 0) {
    
                Object[] pduArray = (Object[]) intent.getExtras().get("pdus");
                SmsMessage[] messages = new SmsMessage[pduArray.length];
        
                for (int i = 0; i < pduArray.length; i++) {
                    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
                        messages[i] = SmsMessage.createFromPdu(((byte[]) pduArray[i]), intent.getStringExtra(FORMAT));
                    } else {
                        messages[i] = SmsMessage.createFromPdu((byte[]) pduArray[i]);
                    }
                    String phone =  messages[i].getOriginatingAddress();
                    String message =  messages[i].getMessageBody();
    
    }
    }
    }


    3. если нужно чтобы сообщение не попало никуда дальше и не отвлекало юзера
    abortBroadcast();
    Ответ написан
  • Как правильно реализовать копирование элементов массива из 1-го Tableview во 2-ое Tableview?

    Vo0ne
    @Vo0ne
    work hard
    Я бы сделал так:
    создать новый NSMutableArray, который предназначен для хранения значений выбранных ячеек, а затем передать этот массив в новую таблицу в качестве источника данных.
    Ответ написан
    Комментировать
  • Java: Почему не получается обработать JSON?

    @Eserchik
    Для начала тебе нужно точно знать что тебе возвращает сервер, для этого можно например установить расширение для Chrome - Postman REST CLIENT(сформировать в нем свой запрос и посмотреть какую json структуру он возвращает).
    В своем коде ты не передаешь серверу какие либо данные, у тебя конструкция:
    ArrayList<NameValuePair> param = new ArrayList<NameValuePair>();
    -пустая. Ты отправляешь тока некий пустой заголовок. Должно быть так например:
    List<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>(3);
    	        nameValuePairs.add(new BasicNameValuePair("grant_type", "password"));
    	        nameValuePairs.add(new BasicNameValuePair("password", pass));
    	        nameValuePairs.add(new BasicNameValuePair("username", login));
    	        httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs));


    Json ответ может быть простой:
    {
        "name": "Иванов Сергей",
        "phone": "89651102121"
    }

    Тогда вот:
    if(result != null){
    				
    	  			try{
    	  				final JSONArray jArray = new JSONArray(result);
    	  	               
    	  				   for(int i=0;i<jArray.length();i++) 
    	  				      {
    	  					     JSONObject json_data = jArray.getJSONObject(i);
    	  					
    	  					  String  name = json_data.getString("name");
    	  					  String phone =json_data.getString("phone");
    	  				
    	  	                  }
    	  	          }catch(JSONException e1){
    	  				         Log.d(LOG_TAG,"Ошибка Json Parse: "+e1.toString());
    	  			    }
    	  			
    	  		}


    А может Json быть сложным

    {
       "Status":{
          "Name":"Подтверждена",
          "Id":2
       },
       "Description":"Описание",
       "WorkCategory":{
          "Name":"Электрика",
          "Id":1
       },
       "OrderedAt":"2014-07-04T11:00:00.000Z",
       "ClientName":"ФИО",
       "ClientAddress":"Адрес",
       "ClientPhone":"89651101010",
       "ServiceComment":"Ваш комментарий",
       "City":{
          "Name":"Москва",
          "Id":1
       },
       "Title":"Название заявки"
    }


    Тогда надо делать так:
    if(result != null){
    	  
    
    	  try{
          
    	  	        JSONObject jObject = new JSONObject(result);
                            JSONArray myValue = jObject.getJSONArray("value");
    	  				
    
    	  				
    	  				
    	  		for (int i = 0; i < myValue.length(); i++) {
                            JSONObject c = myValue.getJSONObject(i);
                             
                            //Категория работ
                            JSONObject WorkCategoryObj = c.getJSONObject("WorkCategory");
                            String WorkCategory =WorkCategoryObj.getString("Name");
                            
                            //Город
                            JSONObject CityObj = c.getJSONObject("City");
                            String City =CityObj.getString("Name");
                            
                            //Статус
                            JSONObject StatusObj = c.getJSONObject("Status");
                            String Status =StatusObj.getString("Name");
                            
                            //Содержимое заявки
                            String Id = c.getString("Id");
                            String Num = c.getString("Num");
                            String Title = c.getString("Title");
                            String Description = c.getString("Description");
                            String CreatedAt = c.getString("CreatedAt");
                            String ArrivedAt = c.getString("ArrivedAt");
                            String OrderedAt = c.getString("OrderedAt");
                            String CompletedAt = c.getString("CompletedAt");
                            String ServiceComment = c.getString("ServiceComment");
                            String WorkerComment = c.getString("WorkerComment");
                            String ClientName = c.getString("ClientName");
                            String ClientAddress = c.getString("ClientAddress");
                            String ClientPhone = c.getString("ClientPhone");
                            String ClientComment = c.getString("ClientComment");
                            
    
    	  				}
    	  				
    	  				
    	  		
     			    }
    	  			catch(JSONException e1){
    				         Log.d(LOG_TAG,"Ошибка Json Parse: "+e1.toString());
    			    }
    Ответ написан
    1 комментарий
  • С изучения чего начать разработку приложения для просмотра расписаний автобусов с сайта под Android?

    @jutsu
    Пишу такое же приложение, но для кинотеатра. Все они имеют очень похожую структуру и решения разных задач.
    Можно парсить сайт в самом апп или на сервере. Я делал на сервере, но в твоем случае лучше это делать в апп. Дальше формируешь модель. После получения коллекции моделей заполняешь свой список.
    Ответ написан
    Комментировать