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

Программирование Android

Войти
Регистрация
Восстановить пароль
 
BeutiFul BiTcH
1 / 1 / 0
Регистрация: 21.01.2016
Сообщений: 20
#1

Добавление библиотеки - Программирование Android

20.02.2016, 01:50. Просмотров 799. Ответов 5
Метки нет (Все метки)

Добрый вечер!
Возникла проблема при добавлении в проект библиотек:
org.apache.http. … (org.apache.http.Header, org.apache.http.HttpEntity, org.apache.http.HttpHost, org.apache.http.HttpResponse …)

org.apache.http.client. … (org.apache.http.client.ClientProtocolException, org.apache.http.client.HttpClient, org.apache.http.client.ResponseHandler …)

“Гугл” советует изменить build.grable, но мои эксперименты не завершились успехом
Error: (23, 23) error: cannot find symbol class Header
Error: (24, 23) error: cannot find symbol class HttpHost
Error: (25, 23) error: cannot find symbol class HttpResponse
Error: (26, 38) error: package org.apache.http.client.methods does not exist

Помогите пожалуйста советом как решить проблему
Вот содержимое build.grable:
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
apply plugin: 'com.android.application'
android {
    signingConfigs {
        …
    }
    compileSdkVersion 23
    buildToolsVersion '23.0.0'
    defaultConfig {
        …
        minSdkVersion 15
        targetSdkVersion 23
        …
        signingConfig signingConfigs.config
    }
    buildTypes {
        release {
          …
        }
    }
    productFlavors {
    }
}
dependencies {
    compile fileTree(include: ['*.jar'], dir: 'libs')
    compile 'com.android.support:appcompat-v7:23.0.0'
    compile 'com.google.android.gms:play-services:8.4.0'
    compile 'org.apache.httpcomponents:httpclient:4.5'
    compile 'com.android.support:design:23.0.0'
}
Добавлено через 53 минуты
В статье про Android 6.0 (API level 23) сказано добавить в build.grable:
Java
1
2
3
android {
    useLibrary 'org.apache.http.legacy'
}
Получаю ошибку:
Error: (13, 0) Gradle DSL method not found: 'useLibrary()'
Possible causes:<ul><li>The project 'XXX' may be using a version of the Android Gradle plug-in that does not contain the method (e.g. 'testCompile' was added in 1.1.0).
<a href="fixGradleElements">Fix plugin version and sync project</a></li><li>The project 'ХХХ' may be using a version of Gradle that does not contain the method.
<a href="open.wrapper.file">Open Gradle wrapper file</a></li><li>The build file may be missing a Gradle plugin.
<a href="apply.gradle.plugin">Apply Gradle plugin</a></li>


Добавлено через 59 минут
Клик по Fix plugin version and sync project помог с добавлением библиотеки, но сразу же появилась новая проблема с переходом на API 23 - Notifications:
This release removes the Notification.setLatestEventInfo() method. Use the Notification.Builder class instead to construct notifications. To update a notification repeatedly, reuse the Notification.Builder instance. Call the build() method to get updated Notification instances.
The adb shell dumpsys notification command no longer prints out your notification text. Use the adb shell dumpsys notification --noredact command instead to print out the text in a notification object.


Кто-то знает как использовать Notification.Builder вместо Notification.setLatestEventInfo()???

P.S.: Думаю уместней переименовать тему на «Проблемы после обновления до API 23»

Добавлено через 39 минут
Сама спросила – сама отвечу, вдруг кому-то пригодится. Как уже было сказано с AIP23 метод .setLatestEventInfo удален.
com.google.android.vending.expansion.downloader.impl.DownloadNotification использует данный метод целых два раза. Если вам нужно юзать файлы дополнений в своем приложении(поддержка obb архивов), замените содержимое com.google.android.vending.expansion.downloader.impl.DownloadNotification на следующий код:

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
208
209
210
211
212
213
214
215
216
217
218
package com.google.android.vending.expansion.downloader.impl;
 
import android.annotation.TargetApi;
import android.app.Notification;
import android.app.NotificationManager;
import android.app.PendingIntent;
import android.content.Context;
import android.os.Build;
import android.os.Messenger;
 
import com.google.android.vending.expansion.downloader.DownloadProgressInfo;
import com.google.android.vending.expansion.downloader.DownloaderClientMarshaller;
import com.google.android.vending.expansion.downloader.Helpers;
import com.google.android.vending.expansion.downloader.IDownloaderClient;
 
import com.android.vending.expansion.downloader.R;
/**
 * This class handles displaying the notification associated with the download
 * queue going on in the download manager. It handles multiple status types;
 * Some require user interaction and some do not. Some of the user interactions
 * may be transient. (for example: the user is queried to continue the download
 * on 3G when it started on WiFi, but then the phone locks onto WiFi again so
 * the prompt automatically goes away)
 * <p/>
 * The application interface for the downloader also needs to understand and
 * handle these transient states.
 */
public class DownloadNotification implements IDownloaderClient {
 
    private int mState;
    private final Context mContext;
    private final NotificationManager mNotificationManager;
    private String mCurrentTitle;
 
    private IDownloaderClient mClientProxy;
    final ICustomNotification mCustomNotification;
    private Notification.Builder mNotificationBuilder;
    private Notification.Builder mCurrentNotificationBuilder;
    private CharSequence mLabel;
    private String mCurrentText;
    private PendingIntent mContentIntent;
    private DownloadProgressInfo mProgressInfo;
 
    static final String LOGTAG = "DownloadNotification";
    static final int NOTIFICATION_ID = LOGTAG.hashCode();
 
    public PendingIntent getClientIntent() {
        return mContentIntent;
    }
 
    public void setClientIntent(PendingIntent mClientIntent) {
        this.mContentIntent = mClientIntent;
    }
 
    public void resendState() {
        if (null != mClientProxy) {
            mClientProxy.onDownloadStateChanged(mState);
        }
    }
 
    @TargetApi(Build.VERSION_CODES.JELLY_BEAN)
    @Override
    public void onDownloadStateChanged(int newState) {
        if (null != mClientProxy) {
            mClientProxy.onDownloadStateChanged(newState);
        }
        if (newState != mState) {
            mState = newState;
            if (newState == IDownloaderClient.STATE_IDLE || null == mContentIntent) {
                return;
            }
            int stringDownloadID;
            int iconResource;
            boolean ongoingEvent;
 
            // get the new title string and paused text
            switch (newState) {
                case 0:
                    iconResource = android.R.drawable.stat_sys_warning;
                    stringDownloadID = R.string.state_unknown;
                    ongoingEvent = false;
                    break;
 
                case IDownloaderClient.STATE_DOWNLOADING:
                    iconResource = android.R.drawable.stat_sys_download;
                    stringDownloadID = Helpers.getDownloaderStringResourceIDFromState(newState);
                    ongoingEvent = true;
                    break;
 
                case IDownloaderClient.STATE_FETCHING_URL:
                case IDownloaderClient.STATE_CONNECTING:
                    iconResource = android.R.drawable.stat_sys_download_done;
                    stringDownloadID = Helpers.getDownloaderStringResourceIDFromState(newState);
                    ongoingEvent = true;
                    break;
 
                case IDownloaderClient.STATE_COMPLETED:
                case IDownloaderClient.STATE_PAUSED_BY_REQUEST:
                    iconResource = android.R.drawable.stat_sys_download_done;
                    stringDownloadID = Helpers.getDownloaderStringResourceIDFromState(newState);
                    ongoingEvent = false;
                    break;
 
                case IDownloaderClient.STATE_FAILED:
                case IDownloaderClient.STATE_FAILED_CANCELED:
                case IDownloaderClient.STATE_FAILED_FETCHING_URL:
                case IDownloaderClient.STATE_FAILED_SDCARD_FULL:
                case IDownloaderClient.STATE_FAILED_UNLICENSED:
                    iconResource = android.R.drawable.stat_sys_warning;
                    stringDownloadID = Helpers.getDownloaderStringResourceIDFromState(newState);
                    ongoingEvent = false;
                    break;
 
                default:
                    iconResource = android.R.drawable.stat_sys_warning;
                    stringDownloadID = Helpers.getDownloaderStringResourceIDFromState(newState);
                    ongoingEvent = true;
                    break;
            }
            mCurrentText = mContext.getString(stringDownloadID);
            mCurrentTitle = mLabel.toString();
            mCurrentNotificationBuilder.setTicker(mLabel + ": " + mCurrentText);
            mCurrentNotificationBuilder.setSmallIcon(iconResource);
            mCurrentNotificationBuilder.setContentTitle(mCurrentTitle);
            mCurrentNotificationBuilder.setContentText(mCurrentText);
            mCurrentNotificationBuilder.setContentIntent(mContentIntent);
            mCurrentNotificationBuilder.setOngoing(ongoingEvent);
            mCurrentNotificationBuilder.setAutoCancel(!ongoingEvent);
            mNotificationManager.notify(NOTIFICATION_ID, mCurrentNotificationBuilder.build());
        }
    }
 
    @TargetApi(Build.VERSION_CODES.JELLY_BEAN)
    @Override
    public void onDownloadProgress(DownloadProgressInfo progress) {
        mProgressInfo = progress;
        if (null != mClientProxy) {
            mClientProxy.onDownloadProgress(progress);
        }
        if (progress.mOverallTotal <= 0) {
            // we just show the text
            mNotificationBuilder.setTicker(mCurrentTitle);
            mNotificationBuilder.setSmallIcon(android.R.drawable.stat_sys_download);
            mNotificationBuilder.setContentTitle(mCurrentTitle);
            mNotificationBuilder.setContentText(mCurrentText);
            mNotificationBuilder.setContentIntent(mContentIntent);
            mCurrentNotificationBuilder = mNotificationBuilder;
        } else {
            mCustomNotification.setCurrentBytes(progress.mOverallProgress);
            mCustomNotification.setTotalBytes(progress.mOverallTotal);
            mCustomNotification.setIcon(android.R.drawable.stat_sys_download);
            mCustomNotification.setPendingIntent(mContentIntent);
            mCustomNotification.setTicker(mLabel + ": " + mCurrentText);
            mCustomNotification.setTitle(mLabel);
            mCustomNotification.setTimeRemaining(progress.mTimeRemaining);
            mCurrentNotificationBuilder = mCustomNotification.updateNotification(mContext);
        }
        mNotificationManager.notify(NOTIFICATION_ID, mCurrentNotificationBuilder.build());
    }
 
    public interface ICustomNotification {
        void setTitle(CharSequence title);
 
        void setTicker(CharSequence ticker);
 
        void setPendingIntent(PendingIntent mContentIntent);
 
        void setTotalBytes(long totalBytes);
 
        void setCurrentBytes(long currentBytes);
 
        void setIcon(int iconResource);
 
        void setTimeRemaining(long timeRemaining);
 
        Notification.Builder updateNotification(Context c);
    }
 
    /**
     * Called in response to onClientUpdated. Creates a new proxy and notifies
     * it of the current state.
     *
     * @param msg the client Messenger to notify
     */
    public void setMessenger(Messenger msg) {
        mClientProxy = DownloaderClientMarshaller.CreateProxy(msg);
        if (null != mProgressInfo) {
            mClientProxy.onDownloadProgress(mProgressInfo);
        }
        if (mState != -1) {
            mClientProxy.onDownloadStateChanged(mState);
        }
    }
 
    /**
     * Constructor
     *
     * @param ctx The context to use to obtain access to the Notification
     *            Service
     */
    DownloadNotification(Context ctx, CharSequence applicationLabel) {
        mState = -1;
        mContext = ctx;
        mLabel = applicationLabel;
        mNotificationManager = (NotificationManager)
                mContext.getSystemService(Context.NOTIFICATION_SERVICE);
        mCustomNotification = CustomNotificationFactory
                .createCustomNotification();
        mNotificationBuilder = new Notification.Builder(ctx);
        mCurrentNotificationBuilder = mNotificationBuilder;
 
    }
 
    @Override
    public void onServiceConnected(Messenger m) {
    }
 
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
20.02.2016, 01:50
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Добавление библиотеки (Программирование Android):

Добавление сторонней библиотеки - Программирование Android
И снова здравствуйте:) На сей раз возник вопрос- как добавить стороннюю библиотеку в свое приложение? Захотел прикрутить к своему...

Http библиотеки - Программирование Android
где можно скачать все библиотеки для http post запроса ?

Библиотеки поддержки - Программирование Android
Всем привет. Возникала такая беда. при использовании библиотек версий выше compile 'com.android.support:appcompat-v7:23.1.0' ...

Загрузка нативной библиотеки - Программирование Android
Здравствуйте! У меня есть библиотека, в которой содержаться нативные функции для разных классов... Когда класс один, то мне все ясно, я...

Ответ с библиотеки ksoap2 - Программирование Android
Здравствуйте уважаемые форумчане. Возникла такая проблемка: как получить ответ который изображен на первом снимке (в формате XML) ? на...

Использование сторонней библиотеки - Программирование Android
Понадобилось добавить в приложение диалог выбора цвета. Встроенного ColorPicker'a я не нашёл и пошёл гуглить рукописные варианты. Самый...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
CoolMind
418 / 401 / 65
Регистрация: 06.10.2012
Сообщений: 1,727
20.02.2016, 13:59 #2
BeutiFul BiTcH, добрый день!
Тоже недавно начал работать с данной библиотекой, которая уже устарела (использую чужой проект). Тоже столкнулся с 23 версией API. Интересно, а зачем вам сейчас поднимать это барахло, если есть другие библиотеки?
BeutiFul BiTcH
1 / 1 / 0
Регистрация: 21.01.2016
Сообщений: 20
22.02.2016, 17:38  [ТС] #3
Я бы с радостью использовала другие библиотеки, но когда мне нужно было реализовать интерфейс работы с файлами дополнений, примеры которые я нашла, использовали только ее.
CoolMind, если у вас есть нормальные рабочие примеры по работе других библиотек, скиньте пожалуйста ссылку.
CoolMind
418 / 401 / 65
Регистрация: 06.10.2012
Сообщений: 1,727
24.02.2016, 12:25 #4
BeutiFul BiTcH, всё зависит от задания. Я так понял, вам нужно скачивать файлы. Для этого можно помучаться со стандартным DownloadManager'ом (http://blog.vogella.com/2011/06/14/a...nager-example/). Он позволяет качать файлы и отображать процесс в верхней шторке. По окончании делает обратный вызов. Можно во время скачивания переименовать файл.
Если требуется работа с HTTP, то обычно рекомендуют Retrofit, OkHTTP. Я работал с HttpURLConnection, там приходится прописывать всю логику, а это сложнее, чем AsyncHttpClient.
BeutiFul BiTcH
1 / 1 / 0
Регистрация: 21.01.2016
Сообщений: 20
24.02.2016, 20:00  [ТС] #5
CoolMind, спасибо. На данный момент мне нужно реализовать только скачивание, но думаю, в скором времени, будет необходимость реализовать клиент-серверную логику работы приложения.
CoolMind
418 / 401 / 65
Регистрация: 06.10.2012
Сообщений: 1,727
25.02.2016, 01:12 #6
BeutiFul BiTcH, не за что, уважаемая! Обращайтесь.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
25.02.2016, 01:12
Привет! Вот еще темы с ответами:

Unit test библиотеки - Программирование Android
Всем привет, ситуация такая. Использую для сетевых запросов Retrofit. Собственно эта библиотека отвечает за всё, за подключение, за ошибки,...

Вынести классы ядра в библиотеки - Программирование Android
Гуру андроида, посоветуйте пожалуста! Пишу несколько проектов (для себя) и появляются обьмные классы, нужные одновременно всем моим...

Подключаемые библиотеки в Android Studio - Программирование Android
Сразу скажу что я нуб, сегодня первый день когда взялся за java и android studio. Написал пока примитивный класс для отправки post данных...

Интеграция библиотеки с GitHub в Студию - Программирование Android
Гуру, дайте краткую инструкцию, пли-и-из! (библиотеками раньше не пользовался - первые шаги и &quot;первая паранойя&quot;) Есть такое (рисует...


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

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
25.02.2016, 01:12
Ответ Создать тему
Опции темы

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