Google Android - это несложно

Добро пожаловать на форум сайта startandroid.ru
Текущее время: 17 дек 2018, 03:30

Часовой пояс: UTC + 3 часа




Начать новую тему Ответить на тему  [ 1 сообщение ] 
Автор Сообщение
СообщениеДобавлено: 14 окт 2014, 15:24 

Зарегистрирован: 14 окт 2014, 15:13
Сообщений: 1
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.
пилю прожку для вк простенькую для освоения програмирования и вроде все запускается и работает но вот уперся в реализацию капчи и чего я только не пробовал.
Вот код куска отвечающего за отправку сообщения.
Код: [ Загрузить ] [ Скрыть ]
  1. package com.perm.kate.api.sample; 
  2. import com.perm.kate.api.Api; 
  3. import android.app.Activity; 
  4. import android.content.Intent; 
  5. import android.os.Bundle; 
  6. import android.view.View; 
  7. import android.view.View.OnClickListener; 
  8. import android.widget.Button; 
  9. import android.widget.EditText; 
  10. import android.widget.Toast; 
  11.  
  12. public class MainActivity extends Activity { 
  13.      
  14.     private final int REQUEST_LOGIN=1; 
  15.      
  16.     Button authorizeButton; 
  17.     Button logoutButton; 
  18.     Button postButton; 
  19.     EditText messageEditText; 
  20.      
  21.     Account account=new Account(); 
  22.     Api api; 
  23.      
  24.     @Override 
  25.     public void onCreate(Bundle savedInstanceState) { 
  26.         super.onCreate(savedInstanceState); 
  27.         setContentView(R.layout.main); 
  28.          
  29.         setupUI(); 
  30.          
  31.         //Восстановление сохранённой сессии 
  32.         account.restore(this); 
  33.          
  34.         //Если сессия есть создаём API для обращения к серверу 
  35.         if(account.access_token!=null) 
  36.             api=new Api(account.access_token, Constants.API_ID); 
  37.          
  38.         showButtons(); 
  39.     } 
  40.  
  41.     private void setupUI() { 
  42.         authorizeButton=(Button)findViewById(R.id.authorize); 
  43.         logoutButton=(Button)findViewById(R.id.logout); 
  44.         postButton=(Button)findViewById(R.id.post); 
  45.         messageEditText=(EditText)findViewById(R.id.message); 
  46.         authorizeButton.setOnClickListener(authorizeClick); 
  47.         logoutButton.setOnClickListener(logoutClick); 
  48.         postButton.setOnClickListener(postClick); 
  49.     } 
  50.      
  51.     private OnClickListener authorizeClick=new OnClickListener(){ 
  52.         @Override 
  53.         public void onClick(View v) { 
  54.             startLoginActivity(); 
  55.         } 
  56.     }; 
  57.      
  58.     private OnClickListener logoutClick=new OnClickListener(){ 
  59.         @Override 
  60.         public void onClick(View v) { 
  61.             logOut(); 
  62.         } 
  63.     }; 
  64.      
  65.     private OnClickListener postClick=new OnClickListener(){ 
  66.         @Override 
  67.         public void onClick(View v) { 
  68.             postToWall(); 
  69.         } 
  70.     }; 
  71.      
  72.     private void startLoginActivity() { 
  73.         Intent intent = new Intent(); 
  74.         intent.setClass(this, LoginActivity.class); 
  75.         startActivityForResult(intent, REQUEST_LOGIN); 
  76.     } 
  77.      
  78.     @Override 
  79.     protected void onActivityResult(int requestCode, int resultCode, Intent data) { 
  80.         if (requestCode == REQUEST_LOGIN) { 
  81.             if (resultCode == RESULT_OK) { 
  82.                 //авторизовались успешно  
  83.                 account.access_token=data.getStringExtra("token"); 
  84.                 account.user_id=data.getLongExtra("user_id", 0); 
  85.                 account.save(MainActivity.this); 
  86.                 api=new Api(account.access_token, Constants.API_ID); 
  87.                 showButtons(); 
  88.             } 
  89.         } 
  90.     } 
  91.      
  92.     private void postToWall() { 
  93.         //Общение с сервером в отдельном потоке чтобы не блокировать UI поток 
  94.         new Thread(){ 
  95.             @Override 
  96.             public void run(){ 
  97.                 try { 
  98.                     String text=messageEditText.getText().toString(); 
  99.                     api.createWallPost(account.user_id, text, null, null, false, false, false, null, null, null, 0L, null, null); 
  100.                     //Показать сообщение в UI потоке  
  101.                     runOnUiThread(successRunnable); 
  102.                 } catch (Exception e) { 
  103.                     e.printStackTrace(); 
  104.                 } 
  105.             } 
  106.         }.start(); 
  107.     } 
  108.      
  109.     Runnable successRunnable=new Runnable(){ 
  110.         @Override 
  111.         public void run() { 
  112.             Toast.makeText(getApplicationContext(), "Запись успешно добавлена", Toast.LENGTH_LONG).show(); 
  113.         } 
  114.     }; 
  115.      
  116.     private void logOut() { 
  117.         api=null; 
  118.         account.access_token=null; 
  119.         account.user_id=0; 
  120.         account.save(MainActivity.this); 
  121.         showButtons(); 
  122.     } 
  123.      
  124.     void showButtons(){ 
  125.         if(api!=null){ 
  126.             authorizeButton.setVisibility(View.GONE); 
  127.             logoutButton.setVisibility(View.VISIBLE); 
  128.             postButton.setVisibility(View.VISIBLE); 
  129.             messageEditText.setVisibility(View.VISIBLE); 
  130.         }else{ 
  131.             authorizeButton.setVisibility(View.VISIBLE); 
  132.             logoutButton.setVisibility(View.GONE); 
  133.             postButton.setVisibility(View.GONE); 
  134.             messageEditText.setVisibility(View.GONE); 
  135.         } 
  136.     } 

Чтоб не казаться пройобиком который хочет получить код на халяву, я перепробывал различные методы вставок и комбинаций , по моему мнению необходимо чтобы эта проверка была в
Код: [ Загрузить ] [ Скрыть ]
  1. private void postToWall()  
и скорее всего даже после
Код: [ Загрузить ] [ Скрыть ]
  1. catch  
но как реализовать передачу данных об ошибке в public void onCaptchaError так и не догодался ((( помогите поэжалуйста начинающему дроид девелоперу :roll:
вот советы по ее использованию от ВК
Цитата:
VKError содержит свойство errorCode.
При проверке ошибок следует сначала проверить code на совпадение с глобальной константой VKError.VK_API_ERROR. Если это так, то необходимо обрабатывать поле apiError, которое содержит описание ошибки VK API.
Если же code не совпадает с VK_API_ERROR, то code содержит в себе http-код ошибки, и следует обрабатывать поле httpError.
Некоторые ошибки SDK может обработать сам (ошибка капчи, ошибка валидации). Для этого у делегата будут вызваны соответствующие методы.
Пример обработки в делегате ошибки, для которой требуется ввод капчи:

Код: [ Загрузить ] [ Скрыть ]
  1. public void onCaptchaError(VKError captchaError) {  
  2. new VKCaptchaDialog(captchaError).show();  
  3. }  


ЗЫ использую в основе андроид АПИ от самих вк https://github.com/thest1/Android-VKontakte-SDK/blob/master/AndroidVkSdkSample/src/com/perm/kate/api/sample/MainActivity.java


Вернуться наверх
 Профиль  
 
Показать сообщения за:  Сортировать по:  
Начать новую тему Ответить на тему  [ 1 сообщение ] 

Часовой пояс: UTC + 3 часа


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
cron
Powered by phpBB® Forum Software © phpBB Group
Русская поддержка phpBB