Elektroda.pl
Elektroda.pl
X
Proszę, dodaj wyjątek www.elektroda.pl do Adblock.
Dzięki temu, że oglądasz reklamy, wspierasz portal i użytkowników.

Java Eclipse Android - Pierwszy projekt- zapytanie do serwera.

sucyn 24 Paź 2016 13:01 789 12
  • #1 24 Paź 2016 13:01
    sucyn
    Poziom 8  

    Od kilku dni próbuję napisać apkę na androida, która wyśle proste zapytanie do mojego serwera typu "http://moj.serwer.pl/test.php?zmienna=test". Po wielu nieudanych próbach z Android Studio postanowiłem spróbować z Eclipsem. Niestety program już na samym początku mnie zaskoczył. Po utworzeniu pierwszego nowego projektu na Adroida w pliku MainActivity.java pojawiają się błędy w wygenerowanym kodzie
    Java Eclipse Android - Pierwszy projekt- zapytanie do serwera.

    a w konsoli pojawiają się tysiące errorów:

    Kod: java
    Zaloguj się, aby zobaczyć kod


    Mam pobraną wersję "adt-bundle-windows-x86_64-20140702" i jdk1.8.0_112. W sdkManager zainstalowane podstawowy zestaw tools, android4.4.2(API 19)-na mój telefon oraz sterowniki USB.

    Może ktoś miał podobny problem i podzieli się zemną rozwiązaniem?

    0 12
  • #2 24 Paź 2016 15:40
    jankol-el
    Poziom 20  

    Jaki masz OS i ilu bitowy? Co stanowiło problem w przypadku Android Studio?

    0
  • #3 24 Paź 2016 21:02
    sucyn
    Poziom 8  

    Pracuję na win7 64bit.

    Projekty na Android Studio pisałem na podstawie poradników znalezionych w sieci. Większość z nich była pisana w Eclipsie i importowanie czy też przepisanie ich na Android Studio powodowało wiele problemów podczas kompilacji kodu np:

    Kod: java
    Zaloguj się, aby zobaczyć kod


    Kod: java
    Zaloguj się, aby zobaczyć kod


    Kod: java
    Zaloguj się, aby zobaczyć kod


    Kod: java
    Zaloguj się, aby zobaczyć kod


    i można by tak wypisywać jeszcze wiele...

    Ponieważ dopiero zaczynam z javą i wiele poradników jest właśnie pod Eclipsa to pomyślałem że przeniosę się właśnie na to środowisko, a tu się okazuje, że nawet pustego projektu nie mogę poprawnie stworzyć :(

    0
  • #4 25 Paź 2016 20:02
    LED5W
    Poziom 32  

    Pisząc aplikację na Androida musisz ustalić trzy wersje systemu: minimalną wymaganą do uruchomienia aplikacji, docelową (najwyższą, w której system nie musi wykorzystywać opcji kompatybilności) i używaną do kompilacji. Zależnie do wybranych wersji może być konieczne doinstalowanie i/lub dołączenie czegoś do projektu. Na początek możesz spróbować ustawić wszystkie wersje tak samo.

    0
  • #5 25 Paź 2016 21:00
    sucyn
    Poziom 8  

    Odinstalowałem/usunąłem wszystkie wersje Eclipsa, Javy i SDK z komputera. Ponownie zainstalowałem te komponenty, w sdkManager pobrałem wszystkie pozycje z zakładki Tools oraz API 19 dla mojego urządzenia. Odpalam Eclipsa, tworzę nowy projekt ustalając wszystkie wersje systemu na API 19 i nowy projekt utworzył się prawidłowo i bez błędów. Równie bezproblemowo apka "Hello world" wgrała się na moje urządzenie.

    LED5W dziękuję za podpowiedź :)


    Teraz mogę poważnie podejść do zagadnienia komunikacji mojej apki z serwerem. Tak na prawdę to wolałbym do tego użyć JDBC ponieważ wydaje mi się o wiele bezpieczniejszym rozwiązaniem. Czy ktoś mógłby podzielić się fragmentem kodu tak dla wprowadzenia mnie w JDBC, JSON lub GET POST?

    1
  • #6 25 Paź 2016 22:04
    LED5W
    Poziom 32  

    sucyn napisał:
    [...] w sdkManager pobrałem wszystkie pozycje z zakładki Tools oraz API 19 dla mojego urządzenia.
    Android SDK Build-tools tylko najnowszy. Z API 19 potrzebujesz tylko SDK Platform.


    sucyn napisał:
    Czy ktoś mógłby podzielić się fragmentem kodu tak dla wprowadzenia mnie w JDBC, JSON lub GET POST?
    To są trzy zupełnie różne rzeczy - API, format zapisu danych i metody HTTP...

    0
  • #7 26 Paź 2016 00:51
    sucyn
    Poziom 8  

    Na podstawie poradnika z internetów napisałem taki krótki kod, który miał dodawać do tabeli w bazie danych kolejne wiersze przy użyciu JDBC:

    MainActivity.java

    Kod: java
    Zaloguj się, aby zobaczyć kod


    activity_main.xls
    Kod: html
    Zaloguj się, aby zobaczyć kod


    AndroidManifest.xml
    Kod: html
    Zaloguj się, aby zobaczyć kod


    Do tego wykorzystuję mysql-connector-java-5.1.40-bin.jar

    W bazie danych mam zrobioną odpowiednią bazę:
    Java Eclipse Android - Pierwszy projekt- zapytanie do serwera.

    I utworzyłem nowego użytkownika z przywilejami "rot"
    Java Eclipse Android - Pierwszy projekt- zapytanie do serwera.

    Aplikacja wgrywa się na telefon ale po wciśnięciu buttona inicjującego zapis do bazy nic się w bazie nie pojawia.

    Proszę o pomoc, co może być źle?

    0
  • #8 27 Paź 2016 12:53
    jankol-el
    Poziom 20  

    A uruchamiasz apkę z emulatora, czy "żywego" sprzętu? Ping jest do bazy (możesz użyć jakiegoś narzędzia na Android , terminal etc.)??

    0
  • #9 27 Paź 2016 13:52
    sucyn
    Poziom 8  

    Na telefonie aplikacja działa cały czas ale bez skutku(w bazie nie pojawia się wpis mimo wciskania buttona). W emulatorze po wciśnięciu przycisku pojawia się komunikat i zamyka się aplikacja.
    Java Eclipse Android - Pierwszy projekt- zapytanie do serwera.

    Jest ping z telefonu pod adres serwera 192.168.8.199

    0
  • #10 28 Paź 2016 00:08
    LED5W
    Poziom 32  

    Uruchamiaj aplikację używając opcji Debug zamiast Run.

    Na Twoim miejscu wybrałbym jednak Android Studio. Odnośnie importowania zobacz tutaj.

    0
  • #11 30 Paź 2016 00:44
    sucyn
    Poziom 8  

    Znalazłem inny kod, który od razu po starcie ma aktualizować jeden wiersz w bazie. Cały program wygląda tak:

    Main:

    Kod: java
    Zaloguj się, aby zobaczyć kod


    activity:
    Kod: java
    Zaloguj się, aby zobaczyć kod


    manifest:
    Kod: java
    Zaloguj się, aby zobaczyć kod


    Wyrzuca on błędy w polu tekstowym i wiadomo mniej-więcej gdzie jest błąd, a jest on chyba w linijce

    Kod: java
    Zaloguj się, aby zobaczyć kod


    ponieważ w emulatorze i na telefonie aplikacja wyświetla:
    Java Eclipse Android - Pierwszy projekt- zapytanie do serwera.

    W oryginale kod ten nie był chyba pisany pod androida bo miał dużo funkcji System.println(); które pozamieniałem na pole textowe. Może aby działało na androidzie muszę jeszcze coś zmienić?

    0
  • #12 30 Paź 2016 02:34
    LED5W
    Poziom 32  

    Uruchomiłeś poprzedni kod w trybie debug? Jeśli tak zrobisz program zostanie zatrzymany w miejscu wystąpienia nieobsłużonego wyjątku i będzie wiadomo w czym problem.

    0
  • #13 30 Paź 2016 21:51
    sucyn
    Poziom 8  

    W pierwszym podany przeze mnie kodzie wystarczyło zmienić metodę obsługi przycisku z "private" na "public" i aplikacja się nie zamykała. Mimo wszystko napisałem jeszcze jeden przykład:

    Kod: java
    Zaloguj się, aby zobaczyć kod


    Wszystkie trzy podane kody mają błąd w tym samym miejscu
    Kod: java
    Zaloguj się, aby zobaczyć kod


    ponieważ podczas testowania metodą debug lub run "catch" wyłapuje ten sam błąd:
    Kod: java
    Zaloguj się, aby zobaczyć kod


    W internetach znalazłem info że to może być wina braku zaimportowanej biblioteki mysql-connector, z tym że ja mam ją zaimportowaną we wszystkich projektach tak samo:

    Java Eclipse Android - Pierwszy projekt- zapytanie do serwera.

    Gdzie indziej przeczytałem, że jdbc trzeba używać w zdarzeniach asynchronicznych AsyncTask, a jeszcze gdzieś pisało że trzeba dopisać fragment kodu podany na oficjalnej stronie mysql i umieścić w pliku pom.xml (ale gdzie szukać tego pliku w moich projektach?), a jeszcze najciekawsze co znalazłem to stwierdzenie że na androidzie w ogóle jdbc nie będzie działać i trzeba szukać alternatywy.

    A jaka jest Wasza rada?

    Dodano po 4 [godziny] 46 [minuty]:

    Przepisałem ten ostatni kod do nowego projektu java (nie android application)

    Kod: java
    Zaloguj się, aby zobaczyć kod


    i uruchomiłem debug. Na podstawie błędów jakie zostały zwrócone znalazłem w internecie rozwiązanie problemu. Należało wejść w plik konfiguracyjny bazy danych na serwerze
    Kod: bash
    Zaloguj się, aby zobaczyć kod

    i zmienić
    Kod: bash
    Zaloguj się, aby zobaczyć kod

    na adres mojego serwera. Po restarcie mysql na serwerze odpalam ponownie powyższy program i ku mojemu zdziwieniu zadziałało! W bazie danych pojawiła się zaktualizowana wartość w docelowym wierszu!

    Przepisałem więc kod z powrotem do projektu android application
    Kod: java
    Zaloguj się, aby zobaczyć kod


    i przy debugowaniu niestety otrzymuję takie błędy:
    Kod: java
    Zaloguj się, aby zobaczyć kod


    Jednym słowem kod działa pod win7 a pod androidem już nie. Ktoś ma pomysł dlaczego?

    0