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

База записей, из которой каждый день нужно брать пару-тройку определенных и показывать на экране - Android

Войти
Регистрация
Восстановить пароль
Другие темы раздела
Android API Авито вытянуть информацию об объявлении http://www.cyberforum.ru/android-dev/thread1061380.html
Всем привет. Появилась нужда вытянуть информацию об объявлении, но при частом обращении к авито, они банят по ip. А мобильное приложение под андройд продолжает работать. Оно работает на апи. Может кто знает как правильно к нему обращаться, документации нет, да и вообще оно у них приватное. Вот адрес апи Вот раздебаженное приложение авито
Android Беда с приложением Разрабатываю приложение, игру вернее. Замысел такой: при клике на экран создаётся объект (картинка) существо и движется в сторону противника(до края экрана) и уничтожает его. Вопросы такие: 1)объект при клике существо - это imageview должен быть? 2)при создании этого объекта нужно получать координаты нажатия - это я понял. В какую сторону его двигать тоже думаю разберусь, а вот с границей... http://www.cyberforum.ru/android-dev/thread1061311.html
Android Многомерный ассоциативный массив
Сервер отдает массив вида (JSON): $item=>"val"; Как создать такой же, только в Java, чтоб потом по нему пройтись циклом обрабатывая данные? Я делаю так: JSONObject jsonObj = new JSONObject(out); item = jsonObj.getJSONArray("item"); for (int i= 0; i < item.length(); i++) {
Узнать текущую Activity Android
Всех с новым годом! Из главной активити запускается событие таймера. Скажите, как определить какая активити в текущий момент активна? Я так понимаю, нужно получить стек активити и выбрать самую последнюю? Но как?
Android Программирование НА Android http://www.cyberforum.ru/android-dev/thread1061141.html
Привет.Всех с наступающим. Кто-нибудь пишет программы непосредственно на планшетниках? Поделитесь пожалуйста опытом.
Android Старые добрые мячики (CatchTheBall) https://play.google.com/store/apps/details?id=com.mercury2002.catchtheball Прототип этой игры кажется был еще на компах с досом: отвоёвываем жизненное пространство у отталкивающихся от стенок шариков. Я это сделал не клавишами как в досе, а задействовал датчик акселератора. С виду казалось бы простенькое приложение оказалось довольно-таки трудоёмким в реализации: мой респект тогдашним сишным... подробнее

Показать сообщение отдельно
Kollapser
0 / 0 / 0
Регистрация: 18.12.2013
Сообщений: 31
02.01.2014, 10:25  [ТС]     База записей, из которой каждый день нужно брать пару-тройку определенных и показывать на экране
Промучился около получаса. Что мы имеем в итоге? Ничего. При запуске просто появляется стандартный "Hello World". Самого виджета в системе я не нашел. Код в MainActivity.java я не менял, а там прописано:

Java
1
2
3
4
protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
    }
То есть, как я понял, показывается стандартный слой.

Добавлено через 25 минут
Плюс почитал статьи об SQLite. Я понимаю далеко не все, что там написано. Вероятно, дело в том, что с ООП я практически не имел дел. И все мои познания ограничиваются процедурным программированием.

Я просто не успею до завтра разобраться с нуля в Java и осмысленно что-то сделать. Поэтому прошу вас мне помочь. Ведь для опытного человека задача совсем детская.

Добавлено через 3 часа 50 минут
Окей, пойдем немного другим путем. Решил не заморачиваться и просто хранить строи в массиве
Теперь в файле MainActivity.java после строки "public class MainActivity extends Activity" я пишу "String con[] = {"1","2"};" Таким образом у меня есть массив из двух элементов.
Теперь вопрос, как при запуске записать в textview один из элементов?

Добавлено через 2 минуты
Вызывает проблемы расположение этого присваивания и обращение к элементу

Добавлено через 2 минуты
Или может записать все элементы в константы и уже к ним обращаться?

Добавлено через 54 минуты
С виджетом тоже почти разобрался.
Делал как здесь. Все запускается, но не могу добавить виджет на рабочий стол. В виджетах его просто нет, а в приложение Widget Preview после выбора моего виджета появляется надпись "невозможно добавить виджет"

Добавлено через 57 минут
Переименовал проект, как в уроке - все заработало

Добавлено через 7 часов 52 минуты
Снова здравствуйте. Что-то не выходит, помогите допилить
Создал виджет, все замечательно. Теперь хочу самостоятельно его обновлять. В принципе, могу обойтись и стандартными методами так как временной промежуток довольно большой, но просто захотел проверить обновляется ли что-то вообще.

Имею в MyWidget.java такой код

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
package ru.startandroid.develop.p1171simplewidget;
 
import java.util.Arrays;
 
import android.app.AlarmManager;
import android.app.PendingIntent;
import android.appwidget.AppWidgetManager;
import android.appwidget.AppWidgetProvider;
import android.content.ComponentName;
import android.content.Context;
import android.content.Intent;
import android.util.Log;
import android.widget.RemoteViews;
import android.widget.TextView;
 
public class MyWidget extends AppWidgetProvider {
  final String UPDATE_ALL_WIDGETS = "update_all_widgets";
  final String LOG_TAG = "myLogs";
  int i = 0;
 
  @Override
  public void onEnabled(Context context) {
      super.onEnabled(context);
        Intent intent = new Intent(context, MyWidget.class);
        intent.setAction(UPDATE_ALL_WIDGETS);
        PendingIntent pIntent = PendingIntent.getBroadcast(context, 0, intent, 0);
        AlarmManager alarmManager = (AlarmManager) context
            .getSystemService(Context.ALARM_SERVICE);
        alarmManager.setRepeating(AlarmManager.RTC, System.currentTimeMillis(),
            60000, pIntent);
        Log.d(LOG_TAG, "onEnabled");
  }
 
  public void onUpdate(Context context, AppWidgetManager appWidgetManager,
      int appWidgetID) {
      Log.d(LOG_TAG, "onUpdate " + Integer.toString(appWidgetID));
      i += 1;
      RemoteViews remoteViews = new RemoteViews(context.getPackageName(), R.layout.widget);
      remoteViews.setTextViewText(R.id.tv,Integer.toString(i)); 
  }
 
  @Override
  public void onDeleted(Context context, int[] appWidgetIds) {
    super.onDeleted(context, appWidgetIds);
  }
 
  @Override
  public void onDisabled(Context context) {
      super.onDisabled(context);
        Intent intent = new Intent(context, MyWidget.class);
        intent.setAction(UPDATE_ALL_WIDGETS);
        PendingIntent pIntent = PendingIntent.getBroadcast(context, 0, intent, 0);
        AlarmManager alarmManager = (AlarmManager) context
            .getSystemService(Context.ALARM_SERVICE);
        alarmManager.cancel(pIntent);
  }
  
  @Override
  public void onReceive(Context context, Intent intent) {
    super.onReceive(context, intent);
    if (intent.getAction().equalsIgnoreCase(UPDATE_ALL_WIDGETS)) {
      ComponentName thisAppWidget = new ComponentName(
          context.getPackageName(), getClass().getName());
      AppWidgetManager appWidgetManager = AppWidgetManager
          .getInstance(context);
      int ids[] = appWidgetManager.getAppWidgetIds(thisAppWidget);
      for (int appWidgetID : ids) {
        onUpdate(context, appWidgetManager, appWidgetID);
      }
    }
  }
}
То есть каждую минуту, в теории у меня должен вызываться onUpdate и писать новую цифру на экране. Судя по логам, эта функция вызывается каждую минуту, но изменений на экране я не наблюдаю. Что не так?

Добавлено через 3 минуты
Он у меня немного поругался, в итоге пришлось убрать @Override перед апдейтом, а также заменить массив индексов просто на число (больше одного экземпляра виджета мне и не нужно)

Добавлено через 42 минуты
Чуть ошибся. В апдейте изменил i+=1 на i++. Теперь вывожу это число в логи, но оно тоже не меняется.

Добавлено через 46 минут
Извините за столь обильные подробности разработки

Так как ничего по сути не работало, вернул все обратно

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
package ru.startandroid.develop.p1171simplewidget;
 
import java.util.Arrays;
 
import android.appwidget.AppWidgetManager;
import android.appwidget.AppWidgetProvider;
import android.content.Context;
import android.util.Log;
import android.widget.RemoteViews;
 
public class MyWidget extends AppWidgetProvider {
 
  final String LOG_TAG = "myLogs";
  int i = 0;
  
  @Override
  public void onEnabled(Context context) {
    super.onEnabled(context);
    Log.d(LOG_TAG, "onEnabled");
  }
 
  @Override
  public void onUpdate(Context context, AppWidgetManager appWidgetManager,
      int[] appWidgetIds) {
    super.onUpdate(context, appWidgetManager, appWidgetIds);
    RemoteViews remoteViews = new RemoteViews(context.getPackageName(), R.layout.widget);
    Log.d(LOG_TAG, Integer.toString(i));
    Log.d(LOG_TAG, "onUpdate " + Arrays.toString(appWidgetIds));
    i ++;
    remoteViews.setTextViewText(R.id.tv,Integer.toString(i));
    Log.d(LOG_TAG, Integer.toString(i)); 
  }
 
  @Override
  public void onDeleted(Context context, int[] appWidgetIds) {
    super.onDeleted(context, appWidgetIds);
    Log.d(LOG_TAG, "onDeleted " + Arrays.toString(appWidgetIds));
  }
 
  @Override
  public void onDisabled(Context context) {
    super.onDisabled(context);
    Log.d(LOG_TAG, "onDisabled");
  }
 
}
При запуске в логах вижу следующее:
01-02 11:42:35.066: D/myLogs(664): onEnabled
01-02 11:42:35.087: D/myLogs(664): onUpdate [7]
01-02 11:42:35.437: D/myLogs(664): onUpdate [7]
01-02 11:42:42.936: D/myLogs(769): 0
01-02 11:42:42.936: D/myLogs(769): onUpdate [8]
01-02 11:42:42.936: D/myLogs(769): 1

То есть переменная i, вроде как увеличивается, но значение её в textview не записывается, как быть-то?

Добавлено через 4 минуты
Ещё одна маленькая проблема: если удалить виджет и заново разместить то увидим в логах тоже самое, то есть создается новая переменная i, которой вновь присваивается значение 0. Можно её хранить где-нибудь, чтобы при случайном удалении виджета ничего не сломалось?

Или это не нужно? Так как все что осталось сделать, это заставить виджет обновляться два раза в день, допустим в 7.00 и в 22.00 и, в зависимости от даты, выводить два определенных сообщения.

Добавлено через 35 минут
Подождал полчаса. OnUpdate не вызывался. В логах в это время:
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
01-02 12:15:08.078: D/ExchangeService(615): Received deviceId from Email app: null
01-02 12:15:08.078: D/ExchangeService(615): !!! deviceId unknown; stopping self and retrying
01-02 12:15:13.141: D/ExchangeService(615): !!! EAS ExchangeService, onStartCommand, startingUp = false, running = false
01-02 12:15:13.151: W/ActivityManager(275): Unable to start service Intent { act=com.android.email.ACCOUNT_INTENT } U=0: not found
01-02 12:15:13.151: D/ExchangeService(615): !!! Email application not found; stopping self
01-02 12:15:13.161: W/ActivityManager(275): Unable to start service Intent { act=com.android.email.ACCOUNT_INTENT } U=0: not found
01-02 12:15:13.172: E/ActivityThread(615): Service com.android.exchange.ExchangeService has leaked ServiceConnection com.android.emailcommon.service.ServiceProxy$ProxyConnection@40ce8d40 that was originally bound here
01-02 12:15:13.172: E/ActivityThread(615): android.app.ServiceConnectionLeaked: Service com.android.exchange.ExchangeService has leaked ServiceConnection com.android.emailcommon.service.ServiceProxy$ProxyConnection@40ce8d40 that was originally bound here
01-02 12:15:13.172: E/ActivityThread(615):  at android.app.LoadedApk$ServiceDispatcher.<init>(LoadedApk.java:969)
01-02 12:15:13.172: E/ActivityThread(615):  at android.app.LoadedApk.getServiceDispatcher(LoadedApk.java:863)
01-02 12:15:13.172: E/ActivityThread(615):  at android.app.ContextImpl.bindService(ContextImpl.java:1418)
01-02 12:15:13.172: E/ActivityThread(615):  at android.app.ContextImpl.bindService(ContextImpl.java:1407)
01-02 12:15:13.172: E/ActivityThread(615):  at android.content.ContextWrapper.bindService(ContextWrapper.java:473)
01-02 12:15:13.172: E/ActivityThread(615):  at com.android.emailcommon.service.ServiceProxy.setTask(ServiceProxy.java:157)
01-02 12:15:13.172: E/ActivityThread(615):  at com.android.emailcommon.service.ServiceProxy.setTask(ServiceProxy.java:145)
01-02 12:15:13.172: E/ActivityThread(615):  at com.android.emailcommon.service.AccountServiceProxy.getDeviceId(AccountServiceProxy.java:116)
01-02 12:15:13.172: E/ActivityThread(615):  at com.android.exchange.ExchangeService.getDeviceId(ExchangeService.java:1249)
01-02 12:15:13.172: E/ActivityThread(615):  at com.android.exchange.ExchangeService$7.run(ExchangeService.java:1856)
01-02 12:15:13.172: E/ActivityThread(615):  at com.android.emailcommon.utility.Utility$2.doInBackground(Utility.java:551)
01-02 12:15:13.172: E/ActivityThread(615):  at com.android.emailcommon.utility.Utility$2.doInBackground(Utility.java:549)
01-02 12:15:13.172: E/ActivityThread(615):  at android.os.AsyncTask$2.call(AsyncTask.java:287)
01-02 12:15:13.172: E/ActivityThread(615):  at java.util.concurrent.FutureTask.run(FutureTask.java:234)
01-02 12:15:13.172: E/ActivityThread(615):  at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1080)
01-02 12:15:13.172: E/ActivityThread(615):  at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:573)
01-02 12:15:13.172: E/ActivityThread(615):  at java.lang.Thread.run(Thread.java:856)
01-02 12:15:13.181: E/StrictMode(615): null
01-02 12:15:13.181: E/StrictMode(615): android.app.ServiceConnectionLeaked: Service com.android.exchange.ExchangeService has leaked ServiceConnection com.android.emailcommon.service.ServiceProxy$ProxyConnection@40ce8d40 that was originally bound here
01-02 12:15:13.181: E/StrictMode(615):  at android.app.LoadedApk$ServiceDispatcher.<init>(LoadedApk.java:969)
01-02 12:15:13.181: E/StrictMode(615):  at android.app.LoadedApk.getServiceDispatcher(LoadedApk.java:863)
01-02 12:15:13.181: E/StrictMode(615):  at android.app.ContextImpl.bindService(ContextImpl.java:1418)
01-02 12:15:13.181: E/StrictMode(615):  at android.app.ContextImpl.bindService(ContextImpl.java:1407)
01-02 12:15:13.181: E/StrictMode(615):  at android.content.ContextWrapper.bindService(ContextWrapper.java:473)
01-02 12:15:13.181: E/StrictMode(615):  at com.android.emailcommon.service.ServiceProxy.setTask(ServiceProxy.java:157)
01-02 12:15:13.181: E/StrictMode(615):  at com.android.emailcommon.service.ServiceProxy.setTask(ServiceProxy.java:145)
01-02 12:15:13.181: E/StrictMode(615):  at com.android.emailcommon.service.AccountServiceProxy.getDeviceId(AccountServiceProxy.java:116)
01-02 12:15:13.181: E/StrictMode(615):  at com.android.exchange.ExchangeService.getDeviceId(ExchangeService.java:1249)
01-02 12:15:13.181: E/StrictMode(615):  at com.android.exchange.ExchangeService$7.run(ExchangeService.java:1856)
01-02 12:15:13.181: E/StrictMode(615):  at com.android.emailcommon.utility.Utility$2.doInBackground(Utility.java:551)
01-02 12:15:13.181: E/StrictMode(615):  at com.android.emailcommon.utility.Utility$2.doInBackground(Utility.java:549)
01-02 12:15:13.181: E/StrictMode(615):  at android.os.AsyncTask$2.call(AsyncTask.java:287)
01-02 12:15:13.181: E/StrictMode(615):  at java.util.concurrent.FutureTask.run(FutureTask.java:234)
01-02 12:15:13.181: E/StrictMode(615):  at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1080)
01-02 12:15:13.181: E/StrictMode(615):  at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:573)
01-02 12:15:13.181: E/StrictMode(615):  at java.lang.Thread.run(Thread.java:856)
01-02 12:15:13.181: W/ActivityManager(275): Unbind failed: could not find connection for android.os.BinderProxy@41026820
01-02 12:15:13.191: E/ActivityThread(615): Service com.android.exchange.ExchangeService has leaked ServiceConnection com.android.emailcommon.service.ServiceProxy$ProxyConnection@40ced1a0 that was originally bound here
01-02 12:15:13.191: E/ActivityThread(615): android.app.ServiceConnectionLeaked: Service com.android.exchange.ExchangeService has leaked ServiceConnection com.android.emailcommon.service.ServiceProxy$ProxyConnection@40ced1a0 that was originally bound here
01-02 12:15:13.191: E/ActivityThread(615):  at android.app.LoadedApk$ServiceDispatcher.<init>(LoadedApk.java:969)
01-02 12:15:13.191: E/ActivityThread(615):  at android.app.LoadedApk.getServiceDispatcher(LoadedApk.java:863)
01-02 12:15:13.191: E/ActivityThread(615):  at android.app.ContextImpl.bindService(ContextImpl.java:1418)
01-02 12:15:13.191: E/ActivityThread(615):  at android.app.ContextImpl.bindService(ContextImpl.java:1407)
01-02 12:15:13.191: E/ActivityThread(615):  at android.content.ContextWrapper.bindService(ContextWrapper.java:473)
01-02 12:15:13.191: E/ActivityThread(615):  at com.android.emailcommon.service.ServiceProxy.setTask(ServiceProxy.java:157)
01-02 12:15:13.191: E/ActivityThread(615):  at com.android.emailcommon.service.ServiceProxy.setTask(ServiceProxy.java:145)
01-02 12:15:13.191: E/ActivityThread(615):  at com.android.emailcommon.service.ServiceProxy.test(ServiceProxy.java:191)
01-02 12:15:13.191: E/ActivityThread(615):  at com.android.exchange.ExchangeService$7.run(ExchangeService.java:1850)
01-02 12:15:13.191: E/ActivityThread(615):  at com.android.emailcommon.utility.Utility$2.doInBackground(Utility.java:551)
01-02 12:15:13.191: E/ActivityThread(615):  at com.android.emailcommon.utility.Utility$2.doInBackground(Utility.java:549)
01-02 12:15:13.191: E/ActivityThread(615):  at android.os.AsyncTask$2.call(AsyncTask.java:287)
01-02 12:15:13.191: E/ActivityThread(615):  at java.util.concurrent.FutureTask.run(FutureTask.java:234)
01-02 12:15:13.191: E/ActivityThread(615):  at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1080)
01-02 12:15:13.191: E/ActivityThread(615):  at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:573)
01-02 12:15:13.191: E/ActivityThread(615):  at java.lang.Thread.run(Thread.java:856)
01-02 12:15:13.191: E/StrictMode(615): null
01-02 12:15:13.191: E/StrictMode(615): android.app.ServiceConnectionLeaked: Service com.android.exchange.ExchangeService has leaked ServiceConnection com.android.emailcommon.service.ServiceProxy$ProxyConnection@40ced1a0 that was originally bound here
01-02 12:15:13.191: E/StrictMode(615):  at android.app.LoadedApk$ServiceDispatcher.<init>(LoadedApk.java:969)
01-02 12:15:13.191: E/StrictMode(615):  at android.app.LoadedApk.getServiceDispatcher(LoadedApk.java:863)
01-02 12:15:13.191: E/StrictMode(615):  at android.app.ContextImpl.bindService(ContextImpl.java:1418)
01-02 12:15:13.191: E/StrictMode(615):  at android.app.ContextImpl.bindService(ContextImpl.java:1407)
01-02 12:15:13.191: E/StrictMode(615):  at android.content.ContextWrapper.bindService(ContextWrapper.java:473)
01-02 12:15:13.191: E/StrictMode(615):  at com.android.emailcommon.service.ServiceProxy.setTask(ServiceProxy.java:157)
01-02 12:15:13.191: E/StrictMode(615):  at com.android.emailcommon.service.ServiceProxy.setTask(ServiceProxy.java:145)
01-02 12:15:13.191: E/StrictMode(615):  at com.android.emailcommon.service.ServiceProxy.test(ServiceProxy.java:191)
01-02 12:15:13.191: E/StrictMode(615):  at com.android.exchange.ExchangeService$7.run(ExchangeService.java:1850)
01-02 12:15:13.191: E/StrictMode(615):  at com.android.emailcommon.utility.Utility$2.doInBackground(Utility.java:551)
01-02 12:15:13.191: E/StrictMode(615):  at com.android.emailcommon.utility.Utility$2.doInBackground(Utility.java:549)
01-02 12:15:13.191: E/StrictMode(615):  at android.os.AsyncTask$2.call(AsyncTask.java:287)
01-02 12:15:13.191: E/StrictMode(615):  at java.util.concurrent.FutureTask.run(FutureTask.java:234)
01-02 12:15:13.191: E/StrictMode(615):  at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1080)
01-02 12:15:13.191: E/StrictMode(615):  at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:573)
01-02 12:15:13.191: E/StrictMode(615):  at java.lang.Thread.run(Thread.java:856)
01-02 12:15:13.201: W/ActivityManager(275): Unbind failed: could not find connection for android.os.BinderProxy@41052dd8
01-02 12:15:58.207: D/ExchangeService(615): Received deviceId from Email app: null
01-02 12:15:58.207: D/ExchangeService(615): !!! deviceId unknown; stopping self and retrying
01-02 12:16:03.271: D/ExchangeService(615): !!! EAS ExchangeService, onStartCommand, startingUp = false, running = false
Виджет был создан в 11.45
 
Текущее время: 11:51. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru