• Некоторые компульсии по поводу околокомпьютерных обсессий.

    Sunday, June 15, 2014

    Android клиент для ЖЖ за 10 минут.

    Для ЖЖ написано уж много всякого, и попробовал я рекомендуемый на сайте Живого журнала клиент для андроида. Но что-то он мне не очень понравился, т.н. "юзабельность" оставляет желать лучшего. Зато мобильная версия ЖЖ в браузере великолепно смотрится и вполне юзабельна. Чтобы каждый раз не вводить адрес и не искать в закладках браузера или хрома ЖЖ (согдаситесь, браузер в смартфоне не только для жежешечки), решил "слепить на коленках" себе LJ клиент. Все очень просто.
    1. создать проект. Главный экран - у меня называется main.xml . Значок LJ, я думаю, самому нетрудно сделать.
    2. В главный лайоут вставим webview, удалив предварительно то, что туда подставил мастер. Получается следующее:
    <?xml version="1.0" encoding="utf-8"?>
    <WebView  xmlns:android="http://schemas.android.com/apk/res/android"
        android:id="@+id/webview"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"/>
    
    3. В MainActivity.java надо внести следующие поправки:
    Объявим в классе переменную ljWebView:
         public WebView ljWebView;
    
    Первым делом нужно проверить, в онлайне устройство или нет. В конец класса MainActivity добавим метод isOnline(), который возвращает истину или ложь:
       
    public boolean isOnline() {
        ConnectivityManager cm = (ConnectivityManager)getSystemService(Context.CONNECTIVITY_SERVICE);
        NetworkInfo nInfo = cm.getActiveNetworkInfo();
        if (nInfo != null && nInfo.isConnected()) {
            return true;
        }   else {
     return false;
        } 
     }
    

    Соответственно, вызов метода сразу после setContentView:
      
    if (isOnline() == flase) {
       Context ctx = getBaseContext();
       Toast.makeText(ctx, "Нет соединения с Интернет!", Toast.LENGTH_SHORT).show();
       finish();
    } 
    

    После проверки соединения с интернет, создаем WebView:
       ljWebView = (WebView) findViewById(R.id.webview);
       // следующая строчка для того, чтобы ссылки открывались в нашем приложении, 
       //а не предлагали открыться в браузере или хроме
       ljWebView.setWebViewClient(new WebViewClient());
       ljWebView.getSettings().setJavaScriptEnabled(true); 
       ljWebView.loadUrl("http://m.livejournal.com/"); 
    
    Теперь маленький нюанс: чтобы системная кнопка "назад" делала в приложении именно возврат на шаг назад в истории просмотра, а не выход из приложения. (в классе MainActivity )
      @Override
      public boolean onKeyDown(int keyCode, KeyEvent event) {
      // проверить, нажата Back и есть ли куда возвращаться назад
        if ((keyCode == KeyEvent.KEYCODE_BACK) && ljWebView.canGoBack()) {
            ljWebView.goBack();
            return true;
        }ё
        return super.onKeyDown(keyCode, event);
    }
    
    Обязательно добавим в AndroidManifest.xml строчки:
    <uses-permission android:name="android.permission.INTERNET" />
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
    
    Вот и все, можно пробовать запускать.
    Для тех, кто не хочет возиться : ссылка на google drive
    Post a Comment