Вниз  Android-программирование (1-ые посты)
- 3.05.2013 / 20:20
mrEDitor
  Пользователь

mrEDitor 
Сейчас: Offline
nlhulqrx, stackoverflow.com поможет Вам!

Изменено mrEDitor (3.05 / 20:20) (всего 1 раз)
- 3.05.2013 / 20:59
Naik
  Пользователь

Naik 
Сейчас: Offline
nlhulqrx (03.05.2013/19:35)как из WebView получить исходный код страницы переменую?
  1. private static final String GET_HTML = "GET_HTML";
  2.  
  3. webView.getSettings().setJavaScriptEnabled(true); // включаем поддержку JavaScript
  4. webView.addJavascriptInterface(new MyJavascriptInterface(), GET_HTML);
  5.  
  6. private class MyJavascriptInterface {
  7.  
  8.         public void getHtml(String html) {
  9.             // Получен код
  10.             textView.setText(html);
  11.         }
  12. }
  13.  
  14.  
  15. // Получаем код вот так
  16. webView.loadUrl("javascript:window." + GET_HTML + ".getHtml('<html>'+document.getElementsByTagName('html')[0].innerHTML+'</html>');");


Изменено Naik (3.05 / 20:59) (всего 1 раз)
- 4.05.2013 / 01:05
nlhulqrx
  Пользователь

nlhulqrx 
Сейчас: Offline
Naik, Пробовал подобные примеры с гугла, вылетает после загрузки страницы, что не так делаю или с какой версии андроида это работает?
import android.app.*;
import android.content.*;
import android.net.*;
import android.os.*;
import android.view.*;
import android.webkit.*;
import android.widget.*;

public class MainActivity extends Activity
{
  WebView myWebView;
  TextView tv;
  private static final String GET_HTML = "GET_HTML" ;
  /** Called when the activity is first created. */
     @Override
     public void onCreate(Bundle savedInstanceState)
{
     super.onCreate(savedInstanceState);
     setContentView(R.layout.main);
  myWebView = (WebView)findViewById(R.id.webview);
tv=(TextView)findViewById(R.id.text);
WebSettings webSettings=myWebView.getSettings();
webSettings.setJavaScriptEnabled(true);

myWebView. addJavascriptInterface (new MyJavascriptInterface () , GET_HTML ) ;
myWebView .setWebViewClient(new MyWebViewClient());
myWebView.loadUrl("http://annimon.com"):
     }

  private class MyWebViewClient extends WebViewClient
  {
   public void onPageFinished(WebView view, String address)
   {
  myWebView.loadUrl("javascript:window." + GET_HTML + ".getHtml('<html>'+document.getElementsByTagName('html')[0].innerHTML+'</html>');" ) ;
   }

   public boolean shouldOverrideUrlLoading(WebView view , String url )
   {
  if (Uri.parse(url).getHost().equals("annimon.com"))
   {
  tv.setText(url);
   return false ;
   }

   Intent intent=new Intent(Intent.ACTION_VIEW,Uri.parse(url));
   startActivity(intent);
   return true;
   }
  }
 
  public boolean onKeyDown (int keyCode ,KeyEvent event )
  {
if (( keyCode == KeyEvent.KEYCODE_BACK ) && myWebView.canGoBack())
   {
myWebView .goBack();
return true;
}

return super.onKeyDown (keyCode,event);
}

private class MyJavascriptInterface
    {
public void getHtml( String html )
{
tv.setText("исходный код"+html );
      }
    }
 
}

Изменено nlhulqrx (4.05 / 01:06) (всего 1 раз)
- 4.05.2013 / 09:37
Naik
  Пользователь

Naik 
Сейчас: Offline
nlhulqrx, у меня работает. Смотри логи после вылета
- 4.05.2013 / 15:39
nlhulqrx
  Пользователь

nlhulqrx 
Сейчас: Offline
Naik, хм, если tv.setText("Исходный код:"+html); заменить на Toast.makeText(getBaseContext(),"Исходный код: " + html, Toast.LENGTH_SHORT).show(); всё работает без вылетов, я так понял у меня что то c xml не так?
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:orientation="vertical">
<TextView
   android:id="@+id/text1"
   android:layout_width="wrap_content"
   android:layout_height="wrap_content"
  android:text="start" />
  <EditText
   android:id="@+id/editText1"
   android:layout_width="wrap_content"
   android:layout_height="fill_parent"/>
<WebView
   android:id = "@+id/webview"
   android:layout_width = "wrap_content"
   android:layout_height = "wrap_content"/>
</LinearLayout>
Исходный код должен переред WebView вставляться после загрузки.
- 4.05.2013 / 16:01
Naik
  Пользователь

Naik 
Сейчас: Offline
nlhulqrx, посмотри логи, там все понятно станет. У тебя тут текст на экране не вместится же. Я бы сделал так.
  1. <?xml version="1.0" encoding="utf-8"?>
  2. <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
  3.  android:layout_width="fill_parent"
  4.  android:layout_height="fill_parent"
  5.  android:orientation="vertical">
  6. <TextView
  7.  android:id="@+id/text1"
  8.  android:layout_width="fill_parent"
  9.  android:layout_weight="0.2"
  10.  android:text="start" />
  11.  <EditText
  12.  android:id="@+id/editText1"
  13.  android:layout_width="fill_parent
  14.  android:layout_weight="0.2"/>
  15. <WebView
  16.  android:id = "@+id/webview"
  17.  android:layout_width = "fill_parent"
  18.  android:layout_weight = "0.6"/>
  19. </LinearLayout>

- 4.05.2013 / 16:08
Naik
  Пользователь

Naik 
Сейчас: Offline
Там где не хватает android:layout_height нужно подописывать еще android:layout_heigth="0px"

Изменено Naik (4.05 / 16:13) (всего 1 раз)
- 4.05.2013 / 17:55
web_demon
  Супервизор

web_demon 
Сейчас: Offline
Как убить все активити приложения?
А то нагугленные варианты убивают только текущее активити:
  1. android.os.Process.killProcess(android.os.Process.myPid())
  2. System.exit(0);


Изменено web_demon (4.05 / 18:33) (всего 1 раз)
- 4.05.2013 / 18:30
mrEDitor
  Пользователь

mrEDitor 
Сейчас: Offline
web_demon, теоретически что-то типа этого должно сработать:
  1.  m = (ActivityManager) getSystemService(Context.ACTIVITY_SERVICE);
  2. List<ActivityManager.RunningAppProcessInfo> appsList = m.getRunningAppProcesses();
  3. for (ActivityManager.RunningAppProcessInfo singleApp : appsList) {
  4.   // Сравнить по полю singleApp.processName , наш ли это пациент... то есть, активити.
  5.   // Убить нафиг, считав PID = singleTask.pid
  6. }


Изменено mrEDitor (4.05 / 18:31) (всего 1 раз)
- 4.05.2013 / 20:07
Naik
  Пользователь

Naik 
Сейчас: Offline
web_demon, web_demon (04.05.2013/17:55)Как убить все активити приложения?А то нагугленные варианты убивают только текущее активити:
  1. android.os.Process.killProcess(android.os.Process.myPid())System.exit(0);
http://annimon.com/code/?act=view&id=2179
как параметр передавать пакет приложения. Закроет активити, сервисы, вобщем все, что запущено в процессе приложения.

Изменено Naik (4.05 / 20:11) (всего 2 раза)
Наверх  Всего сообщений: 4453
Фильтровать сообщения
Поиск по теме
Файлы топика (184)