Ir para conteúdo
tony_lu

Navegação Offline

Recommended Posts

Ola pessoal, gostaria de uma informação....

 

Estou criando um app e vou integrar paginas web dentro deste app (WebBrowser), gostaria de saber se alguem conhece algum recurso que por exemplo, caiu a conexão do celular .... sem internet ... sera direcionada para uma pagina offline?

 

Encontrei até um recurso chamado service worker, mas me parece que ele funciona apenas no android, no IOS não funciona...preciso das duas plataformas ...

 

https://googlechrome.github.io/samples/service-worker/custom-offline-page/index.html

 

Aguardo um retorno de vcs!

Obrigado!

Compartilhar este post


Link para o post
Compartilhar em outros sites
  • +1 1

Compartilhar este post


Link para o post
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar Agora


  • Conteúdo Similar

    • Por Batysta Azevedo

      Gente estou tentando colocar um webview com Pull to Refresh e um codigo que faz o file de enviar arquivos abrir dentro do webview.
      Até ai consegui fazer os dois só que quando eu uso os dois codigos juntos um deles para de funcionar.
      Não sei oq fazer, me ajudem por favor.

      activity_main.xml codigos:

      <?xml version="1.0" encoding="utf-8"?>
      <android.support.constraint.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
      xmlns:app="http://schemas.android.com/apk/res-auto"
      xmlns:tools="http://schemas.android.com/tools"
      android:layout_width="match_parent"
      android:layout_height="match_parent"
      tools:context="com.example.smart.projeto.MainActivity">

      <android.support.v4.widget.SwipeRefreshLayout
      android:id="@+id/swipe"
      android:layout_width="match_parent"
      android:layout_height="match_parent">
      <WebView
      android:id="@+id/wvSite"
      android:layout_width="match_parent"
      android:layout_height="match_parent"
      tools:layout_editor_absoluteX="8dp"
      tools:layout_editor_absoluteY="8dp" />

      </android.support.v4.widget.SwipeRefreshLayout>
      </android.support.constraint.ConstraintLayout>


      MainActivity.java codigo:

      package com.example.smart.projeto;

      import android.content.ActivityNotFoundException;
      import android.content.Intent;
      import android.content.res.Configuration;
      import android.graphics.Bitmap;
      import android.net.Uri;
      import android.os.Build;
      import android.support.annotation.RequiresApi;
      import android.support.v4.widget.SwipeRefreshLayout;
      import android.support.v7.app.AppCompatActivity;
      import android.os.Bundle;
      import android.view.View;
      import android.webkit.ValueCallback;
      import android.webkit.WebChromeClient;
      import android.webkit.WebView;
      import android.webkit.WebViewClient;
      import android.widget.ProgressBar;
      import android.widget.Toast;

      public class MainActivity extends AppCompatActivity {

      WebView web;

      SwipeRefreshLayout swipe;

      private ValueCallback<Uri> mUploadMessage;
      public ValueCallback<Uri[]> uploadMessage;
      private final static int FILECHOOSER_RESULTCODE=1;
      public static final int REQUEST_SELECT_FILE = 100;


      @Override
      protected void onCreate(Bundle savedInstanceState) {
      super.onCreate(savedInstanceState);
      setContentView(R.layout.activity_main);



      swipe = (SwipeRefreshLayout) findViewById(R.id.swipe);
      swipe.setOnRefreshListener(new SwipeRefreshLayout.OnRefreshListener() {
      @Override
      public void onRefresh() {

      LoadWeb();
      }
      });

      LoadWeb();







      }

      public void LoadWeb(){

      web = (WebView) findViewById(R.id.wvSite);

      web = new WebView(this);
      web.getSettings().setJavaScriptEnabled(true);
      web.getSettings().setAllowFileAccess(true);
      web.getSettings().setAllowFileAccess(true);
      web.getSettings().setAllowContentAccess(true);
      web.loadUrl("http://clubgames.biz/teste/");
      swipe.setRefreshing(true);
      web.setWebViewClient(new WebViewClient(){


      public void onReceivedError(WebView view, int errorCode, String description, String failingUrl) {

      web.loadUrl("file:///android_asset/error.html");
      }

      public void onPageFinished(WebView view, String url){

      //Hide the SwipeReefreshLayout

      swipe.setRefreshing(false);
      }



      });

      web.setWebChromeClient(new WebChromeClient()
      {
      protected void openFileChooser(ValueCallback uploadMsg, String acceptType)
      {
      mUploadMessage = uploadMsg;
      Intent i = new Intent(Intent.ACTION_GET_CONTENT);
      i.addCategory(Intent.CATEGORY_OPENABLE);
      i.setType("image/*");
      startActivityForResult(Intent.createChooser(i, "File Browser"), FILECHOOSER_RESULTCODE);
      }


      // For Lollipop 5.0+ Devices
      public boolean onShowFileChooser(WebView mWebView, ValueCallback<Uri[]> filePathCallback, WebChromeClient.FileChooserParams fileChooserParams)
      {
      if (uploadMessage != null) {
      uploadMessage.onReceiveValue(null);
      uploadMessage = null;
      }

      uploadMessage = filePathCallback;

      Intent intent = fileChooserParams.createIntent();
      try
      {
      startActivityForResult(intent, REQUEST_SELECT_FILE);
      } catch (ActivityNotFoundException e)
      {
      uploadMessage = null;
      Toast.makeText(MainActivity.this, "Cannot Open File Chooser", Toast.LENGTH_LONG).show();
      return false;
      }
      return true;
      }

      //For Android 4.1 only
      protected void openFileChooser(ValueCallback<Uri> uploadMsg, String acceptType, String capture)
      {
      mUploadMessage = uploadMsg;
      Intent intent = new Intent(Intent.ACTION_GET_CONTENT);
      intent.addCategory(Intent.CATEGORY_OPENABLE);
      intent.setType("image/*");
      startActivityForResult(Intent.createChooser(intent, "File Browser"), FILECHOOSER_RESULTCODE);
      }

      protected void openFileChooser(ValueCallback<Uri> uploadMsg)
      {
      mUploadMessage = uploadMsg;
      Intent i = new Intent(Intent.ACTION_GET_CONTENT);
      i.addCategory(Intent.CATEGORY_OPENABLE);
      i.setType("image/*");
      startActivityForResult(Intent.createChooser(i, "File Chooser"), FILECHOOSER_RESULTCODE);
      }


      });

      setContentView(web);

      }




      @Override
      public void onActivityResult(int requestCode, int resultCode, Intent intent)
      {
      if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP)
      {
      if (requestCode == REQUEST_SELECT_FILE)
      {
      if (uploadMessage == null)
      return;
      uploadMessage.onReceiveValue(WebChromeClient.FileChooserParams.parseResult(resultCode, intent));
      uploadMessage = null;
      }
      }
      else if (requestCode == FILECHOOSER_RESULTCODE)
      {
      if (null == mUploadMessage)
      return;
      // Use MainActivity.RESULT_OK if you're implementing WebView inside Fragment
      // Use RESULT_OK only if you're implementing WebView inside an Activity
      Uri result = intent == null || resultCode != MainActivity.RESULT_OK ? null : intent.getData();
      mUploadMessage.onReceiveValue(result);
      mUploadMessage = null;
      }
      else
      Toast.makeText(MainActivity.this, "Failed to Upload Image", Toast.LENGTH_LONG).show();
      }






      @Override
      public void onBackPressed(){

      if (web.canGoBack()){
      web.goBack();
      }else {
      finish();
      }
      }


      }


      AndroidManifest.xml codigo:


      <?xml version="1.0" encoding="utf-8"?>
      <manifest xmlns:android="http://schemas.android.com/apk/res/android"
      package="com.example.smart.projeto">
      <uses-permission android:name="android.permission.INTERNET"/>
      <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
      <application
      android:allowBackup="true"
      android:icon="@mipmap/ic_launcher"
      android:label="@string/app_name"
      android:roundIcon="@mipmap/ic_launcher_round"
      android:supportsRtl="true"
      android:theme="@style/AppTheme">
      <activity android:name=".MainActivity">
      <intent-filter>
      <action android:name="android.intent.action.MAIN" />

      <category android:name="android.intent.category.LAUNCHER" />
      </intent-filter>
      </activity>
      </application>

      </manifest>
    • Por Batysta Azevedo

      Gente estou tentando colocar um webview com Pull to Refresh e um codigo que faz o file de enviar arquivos abrir dentro do webview.
      Até ai consegui fazer os dois só que quando eu uso os dois codigos juntos um deles para de funcionar.
      Não sei oq fazer, me ajudem por favor.

      activity_main.xml codigos:

      <?xml version="1.0" encoding="utf-8"?>
      <android.support.constraint.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
      xmlns:app="http://schemas.android.com/apk/res-auto"
      xmlns:tools="http://schemas.android.com/tools"
      android:layout_width="match_parent"
      android:layout_height="match_parent"
      tools:context="com.example.smart.projeto.MainActivity">

      <android.support.v4.widget.SwipeRefreshLayout
      android:id="@+id/swipe"
      android:layout_width="match_parent"
      android:layout_height="match_parent">
      <WebView
      android:id="@+id/wvSite"
      android:layout_width="match_parent"
      android:layout_height="match_parent"
      tools:layout_editor_absoluteX="8dp"
      tools:layout_editor_absoluteY="8dp" />

      </android.support.v4.widget.SwipeRefreshLayout>
      </android.support.constraint.ConstraintLayout>


      MainActivity.java codigo:

      package com.example.smart.projeto;

      import android.content.ActivityNotFoundException;
      import android.content.Intent;
      import android.content.res.Configuration;
      import android.graphics.Bitmap;
      import android.net.Uri;
      import android.os.Build;
      import android.support.annotation.RequiresApi;
      import android.support.v4.widget.SwipeRefreshLayout;
      import android.support.v7.app.AppCompatActivity;
      import android.os.Bundle;
      import android.view.View;
      import android.webkit.ValueCallback;
      import android.webkit.WebChromeClient;
      import android.webkit.WebView;
      import android.webkit.WebViewClient;
      import android.widget.ProgressBar;
      import android.widget.Toast;

      public class MainActivity extends AppCompatActivity {

      WebView web;

      SwipeRefreshLayout swipe;

      private ValueCallback<Uri> mUploadMessage;
      public ValueCallback<Uri[]> uploadMessage;
      private final static int FILECHOOSER_RESULTCODE=1;
      public static final int REQUEST_SELECT_FILE = 100;


      @Override
      protected void onCreate(Bundle savedInstanceState) {
      super.onCreate(savedInstanceState);
      setContentView(R.layout.activity_main);



      swipe = (SwipeRefreshLayout) findViewById(R.id.swipe);
      swipe.setOnRefreshListener(new SwipeRefreshLayout.OnRefreshListener() {
      @Override
      public void onRefresh() {

      LoadWeb();
      }
      });

      LoadWeb();







      }

      public void LoadWeb(){

      web = (WebView) findViewById(R.id.wvSite);

      web = new WebView(this);
      web.getSettings().setJavaScriptEnabled(true);
      web.getSettings().setAllowFileAccess(true);
      web.getSettings().setAllowFileAccess(true);
      web.getSettings().setAllowContentAccess(true);
      web.loadUrl("http://clubgames.biz/teste/");
      swipe.setRefreshing(true);
      web.setWebViewClient(new WebViewClient(){


      public void onReceivedError(WebView view, int errorCode, String description, String failingUrl) {

      web.loadUrl("file:///android_asset/error.html");
      }

      public void onPageFinished(WebView view, String url){

      //Hide the SwipeReefreshLayout

      swipe.setRefreshing(false);
      }



      });

      web.setWebChromeClient(new WebChromeClient()
      {
      protected void openFileChooser(ValueCallback uploadMsg, String acceptType)
      {
      mUploadMessage = uploadMsg;
      Intent i = new Intent(Intent.ACTION_GET_CONTENT);
      i.addCategory(Intent.CATEGORY_OPENABLE);
      i.setType("image/*");
      startActivityForResult(Intent.createChooser(i, "File Browser"), FILECHOOSER_RESULTCODE);
      }


      // For Lollipop 5.0+ Devices
      public boolean onShowFileChooser(WebView mWebView, ValueCallback<Uri[]> filePathCallback, WebChromeClient.FileChooserParams fileChooserParams)
      {
      if (uploadMessage != null) {
      uploadMessage.onReceiveValue(null);
      uploadMessage = null;
      }

      uploadMessage = filePathCallback;

      Intent intent = fileChooserParams.createIntent();
      try
      {
      startActivityForResult(intent, REQUEST_SELECT_FILE);
      } catch (ActivityNotFoundException e)
      {
      uploadMessage = null;
      Toast.makeText(MainActivity.this, "Cannot Open File Chooser", Toast.LENGTH_LONG).show();
      return false;
      }
      return true;
      }

      //For Android 4.1 only
      protected void openFileChooser(ValueCallback<Uri> uploadMsg, String acceptType, String capture)
      {
      mUploadMessage = uploadMsg;
      Intent intent = new Intent(Intent.ACTION_GET_CONTENT);
      intent.addCategory(Intent.CATEGORY_OPENABLE);
      intent.setType("image/*");
      startActivityForResult(Intent.createChooser(intent, "File Browser"), FILECHOOSER_RESULTCODE);
      }

      protected void openFileChooser(ValueCallback<Uri> uploadMsg)
      {
      mUploadMessage = uploadMsg;
      Intent i = new Intent(Intent.ACTION_GET_CONTENT);
      i.addCategory(Intent.CATEGORY_OPENABLE);
      i.setType("image/*");
      startActivityForResult(Intent.createChooser(i, "File Chooser"), FILECHOOSER_RESULTCODE);
      }


      });

      setContentView(web);

      }




      @Override
      public void onActivityResult(int requestCode, int resultCode, Intent intent)
      {
      if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP)
      {
      if (requestCode == REQUEST_SELECT_FILE)
      {
      if (uploadMessage == null)
      return;
      uploadMessage.onReceiveValue(WebChromeClient.FileChooserParams.parseResult(resultCode, intent));
      uploadMessage = null;
      }
      }
      else if (requestCode == FILECHOOSER_RESULTCODE)
      {
      if (null == mUploadMessage)
      return;
      // Use MainActivity.RESULT_OK if you're implementing WebView inside Fragment
      // Use RESULT_OK only if you're implementing WebView inside an Activity
      Uri result = intent == null || resultCode != MainActivity.RESULT_OK ? null : intent.getData();
      mUploadMessage.onReceiveValue(result);
      mUploadMessage = null;
      }
      else
      Toast.makeText(MainActivity.this, "Failed to Upload Image", Toast.LENGTH_LONG).show();
      }






      @Override
      public void onBackPressed(){

      if (web.canGoBack()){
      web.goBack();
      }else {
      finish();
      }
      }


      }


      AndroidManifest.xml codigo:


      <?xml version="1.0" encoding="utf-8"?>
      <manifest xmlns:android="http://schemas.android.com/apk/res/android"
      package="com.example.smart.projeto">
      <uses-permission android:name="android.permission.INTERNET"/>
      <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
      <application
      android:allowBackup="true"
      android:icon="@mipmap/ic_launcher"
      android:label="@string/app_name"
      android:roundIcon="@mipmap/ic_launcher_round"
      android:supportsRtl="true"
      android:theme="@style/AppTheme">
      <activity android:name=".MainActivity">
      <intent-filter>
      <action android:name="android.intent.action.MAIN" />

      <category android:name="android.intent.category.LAUNCHER" />
      </intent-filter>
      </activity>
      </application>

      </manifest>
    • Por osrsabetudo
      Galera preciso da ajuda de vocês, para um programa para a criação de games na plataforma android, de preferencia free, mas se não for possível, pode ser pago mas de preferencia barato.      
    • Por lpcoutinho
      Boa noite!
      Sou iniciante em programação e instalei o Android Studio. As variáveis do sistema estão configuradas, mas aparece o erro referente ao gradle:
       
      Error:Could not determine java version from '9.0.1'.
       
      Já tentei mudar o gradle, as variáveis estão corretas, não sei o que fazer.
      Com isso não consigo rodar nem um programa.
      Alguém pode ajudar?
       
    • Por JhoniWillian
      Boa Noite galera
       
      Estou em fase de desenvolvimento de TCC do meu Superior.
       
      A ideia foi desenvolver um aplicativo ''simples'' porém, ''funcional'' onde seria um software de manutenção preventiva de veículos.
       
      Para isso eu preciso pegar informações da centralina do carro utilizando o arduino ELM327 através da conexão OBD2.
       
      Consegui fazer a conexão com o bluetooth, onde estará pareado com o arduino ELM, alguém poderia me instruir de como seguir em frente agora? como conseguir comunicar com a centralina para obter informações dela, como por exemplo. KM Atual do veículo?
×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.

Este projeto é mantido e patrocinado pelas empresas:
Hospedado por: