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

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

Войти
Регистрация
Восстановить пароль
 
 
Рейтинг: Рейтинг темы: голосов - 15, средняя оценка - 4.80
Maguark
1 / 1 / 0
Регистрация: 24.10.2013
Сообщений: 91
#1

Android Studio, Web browser - Программирование Android

01.06.2015, 14:47. Просмотров 2400. Ответов 20
Метки нет (Все метки)

Здравствуйте.
Я пишу программу под ОС Android на android studio.
Программа должна зайти на сайт считать от туда информацию и обработать её. Для начала я решил создать свой Web браузер.
Я нашел замечательную статью: http://developer.alexanderklimov.ru/.../mybrowser.php
Создав по ней приложение оно даже не загрузившись сразу закрывается выдавая ошибку "В приложении MyBrowser произошла ошибка". В режиме дебагинга поставил точку прерывания в onCreate. На доже не дойдя до точки прерывания приложение вылетело с ошибкой. Может в примере есть какая-то ошибка?
Или может я вообще не тем путем иду, и можно считать данные с сайта иным путем?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
01.06.2015, 14:47     Android Studio, Web browser
Посмотрите здесь:

Web view Android studio - Программирование Android
Как загрузить html страницу в webview в android studio? Где найти эту папку android_asset? mWebView = (WebView)...

Android и Web Service - Программирование Android
Написал веб сервис который формирует массив из трех значений, нужно написать андроид приложение, чтоб выводил их . Как этого добиться,...

Android web application - Программирование Android
Помогите все прояснить, на андройде программирую год, есть опыт создания развлекательных приложений и игр. Решил познать сторону веб...

Android & local Web Server - Программирование Android
Всем хай. Задача. С мобилы (андройда) через мобильный браузер не могу увидеть Вэб-сервак на котором крутится сайт. Что имеем. на ПК...

Android Studio тормозит? - Программирование Android
Всем привет! Работаю на процессоре i5. Заметил, что год назад даже достаточно большие проекты не на одну тысячу строк запускались в...

Android studio и NodeJS - Программирование Android
Хочу прикрутить платежную систему https://payonline.ru/developers/SDK/nodejs/ Для Android`а там nodejs, в общем я только слышал о...

Git в Android Studio - Программирование Android
Пытаюсь разобраться с Git встроенным в AS. Создал репозиторий на GitHub, теперь хочу закинуть туда свой проект. Какие файлы нужно туда...

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
KaHucTpa_Yoda
1 / 1 / 0
Регистрация: 14.03.2015
Сообщений: 9
02.06.2015, 06:20     Android Studio, Web browser #2
Код в студию.
Maguark
1 / 1 / 0
Регистрация: 24.10.2013
Сообщений: 91
02.06.2015, 12:31  [ТС]     Android Studio, Web browser #3
Код точь в точь как в примере, но все-же выложу:
avctivity_main.xml
Java
1
2
3
4
5
6
<?xml version = "1.0" encoding="utf-8"?>
 <WebView xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/webview"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
 />
AndroidManifest.xml
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.example.shmyrov.mybrowser" >
    <uses-permission android:name="android.permission.INTERNET"/>
    <application
        android:allowBackup="true"
        android:icon="@drawable/ic_launcher"
        android:label="@string/app_name">
        <activity
            android:name=".MainActivity"
            android:label="@string/app_name"
            android:theme="@android:style/Theme.NoTitleBar">>
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
    </application>
</manifest>
и MainActivity.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
package com.example.shmyrov.mybrowser;
 
import android.support.v7.app.ActionBarActivity;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import android.webkit.WebView;
import android.webkit.WebViewClient;
 
//import java.util.WeakHashMap;
 
 
public class MainActivity extends ActionBarActivity {
    private WebView mWebView;
    private class WebViewer extends WebViewClient{
        @Override
        public boolean shouldOverrideUrlLoading (WebView view, String url)
        {
            view.loadUrl(url);
            return true;
        }
    }
 
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
 
        mWebView = (WebView) findViewById(R.id.webview);
        // включаем поддержку JavaScript
        mWebView.getSettings().setJavaScriptEnabled(true);
        // указываем страницу загрузки
        mWebView.loadUrl("http://developer.alexanderklimov.ru/android");
        mWebView.setWebViewClient(new WebViewer());
    }
 
    @Override
    public void onBackPressed() {
        if (mWebView.canGoBack()) {
            mWebView.goBack();}
        else {
            super.onBackPressed();
        }
    }
 
    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        // Inflate the menu; this adds items to the action bar if it is present.
        getMenuInflater().inflate(R.menu.menu_main, menu);
        return true;
    }
 
 
    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
        // Handle action bar item clicks here. The action bar will
        // automatically handle clicks on the Home/Up button, so long
        // as you specify a parent activity in AndroidManifest.xml.
        int id = item.getItemId();
 
        //noinspection SimplifiableIfStatement
        if (id == R.id.action_settings) {
            return true;
        }
 
        return super.onOptionsItemSelected(item);
    }
 
}
Но я тут почитал, и подумал что создавать браузер все-же было не очень верным решением. Сейчас разбираюсь как просто создать соединение.
KaHucTpa_Yoda
1 / 1 / 0
Регистрация: 14.03.2015
Сообщений: 9
03.06.2015, 05:55     Android Studio, Web browser #4
Попробуйте не удалять заголовок.
А вообще я посоветовал бы http://startandroid.ru/

Добавлено через 7 минут
Возможно это то, что Вам нужно.
Rube
911 / 559 / 88
Регистрация: 13.02.2014
Сообщений: 2,070
03.06.2015, 07:10     Android Studio, Web browser #5
Maguark, а не пробовали искать по форуму? За последний месяц штук 10 тем было.
Maguark
1 / 1 / 0
Регистрация: 24.10.2013
Сообщений: 91
03.06.2015, 13:26  [ТС]     Android Studio, Web browser #6
Спасибо большое за ссылки, но меня как то смущают статьи про заброшенный Эклипс, с учетом того что я использую Андроид студио. Хотя Ява она и есть Ява=)
androbro
323 / 283 / 59
Регистрация: 17.10.2014
Сообщений: 839
03.06.2015, 13:43     Android Studio, Web browser #7
Цитата Сообщение от Maguark Посмотреть сообщение
смущают статьи про заброшенный Эклипс
такие громкие слова лишь подтверждают Вашу некомпетентность в данном вопросе
Maguark
1 / 1 / 0
Регистрация: 24.10.2013
Сообщений: 91
03.06.2015, 14:01  [ТС]     Android Studio, Web browser #8
Цитата Сообщение от androbro Посмотреть сообщение
такие громкие слова лишь подтверждают Вашу некомпетентность в данном вопросе
Так я и не претендую на звание магистра кода Явандроида=) Это моя 2-я программа и на Яве, и в Андроид Студии. Просто я читал, что Гугл забросил Эклипс и выпустил в место него АС. Кстати даже Автор проекта startandroid вроде писал, что Эклипс пройденный этап и он теперь пишет в АС, и постарается править уроки под АС.
androbro
323 / 283 / 59
Регистрация: 17.10.2014
Сообщений: 839
03.06.2015, 14:08     Android Studio, Web browser #9
Maguark,
Цитата Сообщение от Maguark Посмотреть сообщение
даже Автор проекта startandroid вроде писал
ну если уж он написал, то все, срочно перехожу на AS))))
Maguark
1 / 1 / 0
Регистрация: 24.10.2013
Сообщений: 91
04.06.2015, 11:07  [ТС]     Android Studio, Web browser #10
По поводу вашего примера. Я что-то не очень понял как у нас будет вызываться ПП "onPostExecute"?

Собственно код:
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
public class StackParser extends Activity {
  /** Called when the activity is first created. */
  @Override
  public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);
    
    //Находим кнопку
    Button button = (Button)findViewById(R.id.parse);
    //Регистрируем onClick слушателя
    button.setOnClickListener(myListener);
  }
  
  //Диалог ожидания
  private ProgressDialog pd;
  //Слушатель OnClickListener для нашей кнопки
  private OnClickListener myListener = new OnClickListener() {
    public void onClick(View v) {
      //Показываем диалог ожидания
      pd = ProgressDialog.show(StackParser.this, "Working...", "request to server", true, false);
      //Запускаем парсинг
      new ParseSite().execute("http://www.stackoverflow.com");
    }
  };
  
  private class ParseSite extends AsyncTask<String, Void, List<String>> {
    //Фоновая операция
    protected List<String> doInBackground(String... arg) {
      List<String> output = new ArrayList<String>();
      try
      {
        HtmlHelper hh = new HtmlHelper(new URL(arg[0]));
        List<TagNode> links = hh.getLinksByClass("question-hyperlink");
 
        for (Iterator<TagNode> iterator = links.iterator(); iterator.hasNext();)
        {
          TagNode divElement = (TagNode) iterator.next();
          output.add(divElement.getText().toString());
        }
      }
      catch(Exception e)
      {
        e.printStackTrace();
      }
      return output;
    }
 
    //Событие по окончанию парсинга
    protected void onPostExecute(List<String> output) {
      //Убираем диалог загрузки
      pd.dismiss();
      //Находим ListView
      ListView listview = (ListView) findViewById(R.id.listViewData);
      //Загружаем в него результат работы doInBackground
      listview.setAdapter(new ArrayAdapter<String>(StackParser.this,
          android.R.layout.simple_list_item_1 , output));
    }
  }
}
androbro
323 / 283 / 59
Регистрация: 17.10.2014
Сообщений: 839
04.06.2015, 11:40     Android Studio, Web browser #11
Цитата Сообщение от Maguark Посмотреть сообщение
Я что-то не очень понял как у нас будет вызываться ПП "onPostExecute"?
onPostExecute() вызывается автоматически после завершения работы doInBackground()
Maguark
1 / 1 / 0
Регистрация: 24.10.2013
Сообщений: 91
04.06.2015, 13:31  [ТС]     Android Studio, Web browser #12
Попробовал посмотреть в режиме отладки, программа не уходит в onPostExecute...

Добавлено через 12 минут
Попробовал вставить код из onPostExecute в конец doInBackground(). Получилось вот-так:
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
    private class ParseSite extends AsyncTask<String, Void, List<String>> {
        //Фоновая операция
        protected List<String> doInBackground(String... arg) {
            List<String> output = new ArrayList();
            try {
                HtmlHelper hh = new HtmlHelper(new URL(arg[0]));
                List<TagNode> links = hh.getLinksByClass("question-hyperlink");
 
                for (Iterator<TagNode> iterator = links.iterator(); iterator.hasNext(); ) {
                    TagNode divElement = iterator.next();
                    output.add(divElement.getText().toString());
                }
            } catch (Exception e) {
                e.printStackTrace();
            }
            pd.dismiss();
            //Находим ListView
            ListView listview = (ListView) findViewById(R.id.listViewData);
            //Загружаем в него результат работы doInBackground
            listview.setAdapter(new ArrayAdapter(MainActivity.this,
                    android.R.layout.simple_list_item_1 , output));
            return output;
        }
    }
Но приложение теперь закрывается с ошибкой.
androbro
323 / 283 / 59
Регистрация: 17.10.2014
Сообщений: 839
04.06.2015, 13:38     Android Studio, Web browser #13
Цитата Сообщение от Maguark Посмотреть сообщение
Но приложение теперь закрывается с ошибкой.
потому что обращаетесь к UI не из UI-потока.
все что происходит в doInBackground() - выполняется в отдельном потоке.
а вот onPreExecute() и onPostExecute() выполняются в UI-потоке
Maguark
1 / 1 / 0
Регистрация: 24.10.2013
Сообщений: 91
04.06.2015, 13:57  [ТС]     Android Studio, Web browser #14
И еще один попутный глупый вопрос, ни как не могу найти как от этого избавиться. В графическом редакторе activity_main Ориентация объектов не независимая. Если я вставляю объект и не привяжу его ширину или высоту к другому объекту то он растягивается на весь экран. В итоге они вместе группируются, и я не могу отдельно их перемещать по рабочей поверхности.

Добавлено через 5 минут
Цитата Сообщение от androbro Посмотреть сообщение
потому что обращаетесь к UI не из UI-потока.
все что происходит в doInBackground() - выполняется в отдельном потоке.
а вот onPreExecute() и onPostExecute() выполняются в UI-потоке
Спасибо. В принципе я понял. А почему она может не уходить в "onPostExecute"?
Кстати даже AS пишет мне что "onPostExecute" ни где не используется.
androbro
323 / 283 / 59
Регистрация: 17.10.2014
Сообщений: 839
04.06.2015, 14:19     Android Studio, Web browser #15
Цитата Сообщение от Maguark Посмотреть сообщение
Кстати даже AS пишет мне что "onPostExecute" ни где не используется.
меня смущает отсутствие аннотации @Override
а вообще я бы посоветовал пересоздать AT, что бы уже наверняка
Maguark
1 / 1 / 0
Регистрация: 24.10.2013
Сообщений: 91
04.06.2015, 14:35  [ТС]     Android Studio, Web browser #16
При вставке @Override, AS сообщает мне что он тут не нужен "Method does not override method from its supperclss".
Боюсь удивить вас своим вопросом, но всё же, что означает аббревиатура AT?
androbro
323 / 283 / 59
Регистрация: 17.10.2014
Сообщений: 839
04.06.2015, 14:36     Android Studio, Web browser #17
Цитата Сообщение от Maguark Посмотреть сообщение
Боюсь удивить вас своим вопросом, но всё же, что означает аббревиатура AT?
не поверите AsyncTask

Добавлено через 33 секунды
Цитата Сообщение от Maguark Посмотреть сообщение
При вставке @Override, AS сообщает мне что он тут не нужен "Method does not override method from its supperclss".
да бывает такая фигня, пересоздайте да и все
Maguark
1 / 1 / 0
Регистрация: 24.10.2013
Сообщений: 91
04.06.2015, 14:42  [ТС]     Android Studio, Web browser #18
Как я понимаю создаем мы его тут:
Java
1
private class ParseSite extends AsyncTask<String, Void, List<String>> {
А вот что значит его пересоздать пока для меня не очень понятно.
androbro
323 / 283 / 59
Регистрация: 17.10.2014
Сообщений: 839
04.06.2015, 14:49     Android Studio, Web browser #19
Цитата Сообщение от Maguark Посмотреть сообщение
А вот что значит его пересоздать пока для меня не очень понятно
ну значит я не правильно выразился...-"перепиши"
в общем создайте к примеру:
Java
1
private class ParseSite2 extends AsyncTask<String, Void, List<String>> {
и предоставьте IDE сгенерить методы, а вы потом туда скопипастите код из старого AT
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
04.06.2015, 15:27     Android Studio, Web browser
Еще ссылки по теме:

Установил Android Studio - Программирование Android
Установил Android Studio, еще даже проэкта не создал, запустил тот что пустой по умолчанию и уже ошибка! Только скачал, установил и он...

Рендеринг в Android Studio - Программирование Android
Я только начал изучать Android Studio и столкнулся с такой проблемой: при попытке понизить поддерживаемую версию Android для приложения...

Javah в android studio 1.0 - Программирование Android
в терминале android studio ввожу команду C:\DetectPeople\DetectPeopleOpenCV-master\NDKExam\app\src\main&gt;javah -d jni -classpath...

Update Android Studio 1.0 - Программирование Android
У меня стоит AS 1.0 я хочу обновится до 1.3 используя Update, которое вылазеет в правом верхнем углу. Это безопасно после такого обновления...

Таймер Android Studio - Программирование Android
Не могу сделать кнопку возобновления. Помогите пожалуйста. package app.coundowntimer; import android.os.CountDownTimer; import...


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

Или воспользуйтесь поиском по форуму:
Maguark
1 / 1 / 0
Регистрация: 24.10.2013
Сообщений: 91
04.06.2015, 15:27  [ТС]     Android Studio, Web browser #20
Цитата Сообщение от androbro Посмотреть сообщение
ну значит я не правильно выразился...-"перепиши"
в общем создайте к примеру:
Java
1
private class ParseSite2 extends AsyncTask<String, Void, List<String>> {
и предоставьте IDE сгенерить методы, а вы потом туда скопипастите код из старого AT
Да. Спасибо большое за разъяснения, теперь я стал немного больше понимать что тут происходит. Теперь программа уходит в ветвь onPostExecute(кстати что с @Override что без, работает одинаково и ошибок не выдает, но на всякий случай оставил ) Хотя, с сайта никакой информации в listview не отображается=)

Добавлено через 11 минут
В "try" пытаясь выполнить "HtmlHelper hh = new HtmlHelper(new URL(arg[0]));" он улетает в catch. arg[0] = http://www.stackoverflow.com. Как и положено.
Yandex
Объявления
04.06.2015, 15:27     Android Studio, Web browser
Ответ Создать тему
Опции темы

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