Ir para conteúdo
Batysta Azevedo

Pull to Refresh Conflito

Recommended Posts


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>

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 Fábão Ramos
      Olá sei que não é o caso mas preciso de alguem que faça um app para mim nada muito complicado mas com integração com o meu sql server 2012.
       
      app envolve:
       
      compra de moedas virtual para o meu game já pre cadastradas pelo gplay
      e suporte ao cliente.
       
      que tenha alertas de app 
       
      desculpe se não é o local adequado para isso mas estou pesquisando muito e nao sei o trabalho que isso daria mas acredito que não seja um dos mais trabalhosos. 
    • Por agness
      Aprendendo a usar o android studio e seguindo um curso da udacity, importei um projeto do curso e na hora de rodar da esse erro. Já aconteceu com alguém? Alguém sabe como resolver?
       

    • Por ZotInfoCorp
      Bom dia pessoal, estou quase concluindo um aplicativo, porém estou empacado nessa situação.
      Fiz um sistema simples de registro e login apenas pra guardar valores do celular no mysql, ele guarda todos os valores certinhos, também fiz um sistema simples de ranking usando Android, MySql e PHP, ele retorna tudo perfeito.
      Porém quando eu tento fazer o login comparando o usuario e senha do banco de dados pelo android, ele me retorna como valor nulo, sendo que se eu editar o php com usuario e senha, ele retorna no browser os dados referente ao usuário, alguém saberia o por que?
      Sistema de Registrar:   
      public void registrarConta(View v) {         final String nome = profilename.getText().toString();         final String senha = profilepass.getText().toString();         final String email = profileemail.getText().toString();         String id = profileid.getText().toString();         String url = HOST + "/criartapball.php";         if(nome.isEmpty()) {             profilename.setError("Digite seu Nome!");         } //else if()         else if(senha.isEmpty()) {             profilepass.setError("Digite uma Senha!");         } else if(email.isEmpty()) {             profileemail.setError("Digite seu Email!");         } else if(id.isEmpty()) {             final Future<JsonObject> jsonObjectFuture = Ion.with(registrar.this)                     .load(url)                     .setBodyParameter("NOME", nome)                     .setBodyParameter("SENHA", senha)                     .setBodyParameter("EMAIL", email)                     .setBodyParameter("DINHEIRO", "0")                     .setBodyParameter("RECORDE", "0")                     .setBodyParameter("CLIQUES", "0")                     .setBodyParameter("MAIOR_NIVEL", "0")                     .setBodyParameter("TOTAL_GANHO", "0")                     .setBodyParameter("REGISTRADO", "1")                     .asJsonObject()                     .setCallback(new FutureCallback<JsonObject>() {                         @Override                         public void onCompleted(Exception e, JsonObject result) {                             if(result == null) {                                 Toast.makeText(registrar.this, "Não foi possível! Verifique sua conexão.", Toast.LENGTH_LONG).show();                             } else {                                 if (result.get("CREATE").getAsString().equals("OK")) {                                     int idRetornado = Integer.parseInt(result.get("ID").getAsString());                                     //-------- SISTEMA DE DADOS OFFLINE SALVOS NO CELULAR                                     SharedPreferences settings = getSharedPreferences("GAME_DATA", Context.MODE_PRIVATE);                                     SharedPreferences.Editor editor = settings.edit();                                     editor.putInt("TOTAL_GANHO", 0);                                     editor.putInt("DINHEIRO_ATUAL", 0);                                     editor.putInt("CLIQUES_FEITOS", 0);                                     editor.putInt("HIGH_SCORE", 0);                                     editor.putInt("MAIOR_LEVEL", 0);                                     editor.putString("NOME", nome);                                     editor.putString("SENHA", senha);                                     editor.putString("EMAIL", email);                                     editor.putInt("REGISTRADO", 1);                                     editor.putInt("ID_REGISTRO", idRetornado);                                     editor.commit();                                     Toast.makeText(registrar.this, "Jogador " + nome + " criado com Sucesso! ID: " + idRetornado, Toast.LENGTH_LONG).show();                                     Log.d(TAG, "Usuário Registrado:>>> " + nome + " - ID: " + idRetornado + " <<<");                                     startActivity(new Intent(getApplicationContext(), start.class));                                 } else {                                     Toast.makeText(registrar.this, "Nome já utilizado!", Toast.LENGTH_LONG).show();                                 }                             }                         }                     });         }     } PHP do registro:
         
      <?php      include "conexaotapball.php";          $nome = $_POST['NOME'];     $senha = $_POST['SENHA'];     $email = $_POST['EMAIL'];     $dinheiro = $_POST['DINHEIRO'];     $record = $_POST['RECORDE'];     $cliques = $_POST['CLIQUES'];     $maior_nivel = $_POST['MAIOR_NIVEL'];     $total_ganho = $_POST['TOTAL_GANHO'];     $registrado = $_POST['REGISTRADO'];          $sql_insert = "INSERT INTO jogadores (NOME, SENHA, EMAIL, DINHEIRO, RECORDE, CLIQUES, MAIOR_NIVEL, TOTAL_GANHO, REGISTRADO) VALUES (:NOME, :SENHA, :EMAIL, :DINHEIRO, :RECORDE, :CLIQUES, :MAIOR_NIVEL, :TOTAL_GANHO, :REGISTRADO)";          $stmt = $PDO->prepare($sql_insert);          $stmt->bindParam(':NOME',$nome);     $stmt->bindParam(':SENHA',$senha);     $stmt->bindParam(':EMAIL',$email);     $stmt->bindParam(':DINHEIRO',$dinheiro);     $stmt->bindParam(':RECORDE',$record);     $stmt->bindParam(':CLIQUES',$cliques);     $stmt->bindParam(':MAIOR_NIVEL',$maior_nivel);     $stmt->bindParam(':TOTAL_GANHO',$total_ganho);     $stmt->bindParam(':REGISTRADO',$registrado);          if($stmt->execute()) {         $id = $PDO->lastInsertId();         $dados = array("CREATE"=>"OK", "ID"=>$id);     } else {         $dados = array("CREATE"=>"ERRO");         //echo $dados->getMessage();     }     echo json_encode($dados); ?> Sistema de Logar:   
      public void logarConta(View v) {         final String nome = profilename.getText().toString();         final String senha = profilepass.getText().toString();         final String url = HOST + "/login.php";         if(nome.isEmpty()) {             profilename.setError("Digite seu Nome!");         }         else if(senha.isEmpty()) {             profilepass.setError("Digite sua Senha!");         } else {             final Future<JsonObject> jsonObjectFuture = Ion.with(logar.this)                     .load(url)                     .setBodyParameter("NOME", nome)                     .setBodyParameter("SENHA", senha)                     .asJsonObject()                     .setCallback(new FutureCallback<JsonObject>() {                         @Override                         public void onCompleted(Exception e, JsonObject result) {                             //atualizarDados();                             if(result == null) {                                 Toast.makeText(logar.this, "Não foi possível! Verifique sua conexão.", Toast.LENGTH_LONG).show();                             } else {                                 if (result.get("LOGAR").getAsString().equals("OK")) {                                     JsonObject obj = result.get(result.get("ID").getAsString()).getAsJsonObject();                                     rankingrecorde r = new rankingrecorde();                                     r.setID(Integer.valueOf(obj.get("ID").getAsString()));                                     r.setNome(obj.get("NOME").getAsString());                                     r.setSenha(obj.get("SENHA").getAsString());                                     r.setEmail(obj.get("EMAIL").getAsString());                                     r.setDinheiro(obj.get("DINHEIRO").getAsString());                                     r.setRecord(obj.get("RECORDE").getAsString());                                     r.setTotal_ganho(obj.get("TOTAL_GANHO").getAsString());                                     r.setMaior_nivel(obj.get("MAIOR_NIVEL").getAsString());                                     r.setCliques(obj.get("CLIQUES").getAsString());                                     r.setRegistrado(obj.get("REGISTRADO").getAsString());                                     //-------- SISTEMA DE DADOS OFFLINE SALVOS NO CELULAR                                     SharedPreferences settings = getSharedPreferences("GAME_DATA", Context.MODE_PRIVATE);                                     SharedPreferences.Editor editor = settings.edit();                                     editor.putInt("TOTAL_GANHO", Integer.valueOf(r.getTotal_ganho()));                                     editor.putInt("DINHEIRO_ATUAL", Integer.valueOf(r.getDinheiro()));                                     editor.putInt("CLIQUES_FEITOS", Integer.valueOf(r.getCliques()));                                     editor.putInt("HIGH_SCORE", Integer.valueOf(r.getRecord()));                                     editor.putInt("MAIOR_LEVEL", Integer.valueOf(r.getMaior_nivel()));                                     editor.putString("NOME", r.getNome());                                     editor.putString("SENHA", r.getSenha());                                     editor.putString("EMAIL", r.getEmail());                                     editor.putInt("REGISTRADO", Integer.valueOf(r.getRegistrado()));                                     editor.putInt("ID_REGISTRO", r.getID());                                     editor.commit();                                     Toast.makeText(logar.this, "Jogador " + obj.get("NOME").getAsString() + " logado com Sucesso!", Toast.LENGTH_LONG).show();                                     startActivity(new Intent(getApplicationContext(), start.class));                                 } else if (result.get("LOGAR").getAsString().equals("NAOEXISTE")) {                                     Toast.makeText(logar.this, "Nome ou senha incorretos!", Toast.LENGTH_LONG).show();                                 } else {                                     Toast.makeText(logar.this, "Nome já utilizado!", Toast.LENGTH_LONG).show();                                 }                             }                         }                     });         }     }
      PHP do Login:
         
      <?php      include "conexaotapball.php";     $host = "localhost";     $db = "id7211556_tapballusers";     $usuario = "id7211556_zotinfotapball";     $senhadb = "tapballthegame";     $con = mysqli_connect($host,$usuario,$senhadb,$db);          $nome =  "teste"; //$_POST['NOME'];     $senha = "teste";// $_POST['SENHA'];          $sql_login = "SELECT * FROM jogadores WHERE NOME = '$nome' AND SENHA = '$senha'";          $dados_login = $PDO->query($sql_login);     $resultado_login = array();          $result = mysqli_fetch_array(mysqli_query($con,$sql_login));          if(isset($result)) {         //$dados = array("LOGAR"=>"OK");         while($jogador = $dados_login->fetch(PDO::FETCH_OBJ)){             $resultado_login[] = array("ID"=>$jogador->ID, "NOME"=>$jogador->NOME, "SENHA"=>$jogador->SENHA, "EMAIL"=>$jogador->EMAIL,             "DINHEIRO"=>$jogador->DINHEIRO, "RECORDE"=>$jogador->RECORDE, "CLIQUES"=>$jogador->CLIQUES, "MAIOR_NIVEL"=>$jogador->MAIOR_NIVEL,             "TOTAL_GANHO"=>$jogador->TOTAL_GANHO, "REGISTRADO"=>$jogador->REGISTRADO,"LOGAR"=>"OK");         }     } else {         $resultado_login = array("LOGAR"=>"NAOEXISTE");         }     echo json_encode($resultado_login);     //echo json_encode($dados);     mysqli_close($con); ?> Sistema do Ranking:   
      private void listaRanking(){         String url = HOST + "/rankrecorde.php";         Ion.with(getBaseContext())                 .load(url)                 .asJsonArray()                 .setCallback(new FutureCallback<JsonArray>() {                     @Override                     public void onCompleted(Exception e, JsonArray result) {                         if(result == null) {                             Toast.makeText(rankrecorde.this, "Não foi possível! Verifique sua conexão.", Toast.LENGTH_LONG).show();                         } else {                             for (int i = 0; i < result.size(); i++) {                                 JsonObject obj = result.get(i).getAsJsonObject();                                 rankingrecorde r = new rankingrecorde();                                 r.setNome(obj.get("NOME").getAsString());                                 r.setRecord(obj.get("RECORDE").getAsString());                                 lista.add(r);                             }                             rankAdapter.notifyDataSetChanged();                         }                     }                 });     } PHP que faz a função do ranking:   
      <?php     include "conexaotapball.php";          $sql_read = "SELECT * FROM jogadores ORDER BY RECORDE * 1 DESC LIMIT 10";     //$sql_readrecord = "SELECT NAME, RECORDE FROM jogadores ORDER BY RECORDE DESC";     $dados = $PDO->query($sql_read);     //$dados = $PDO->query($sql_readrecord);          $resultado = array();          while($jogador = $dados->fetch(PDO::FETCH_OBJ)){         $resultado[] = array("ID"=>$jogador->ID, "NOME"=>$jogador->NOME, "RECORDE"=>$jogador->RECORDE);     }          echo json_encode($resultado); ?> Site que estou utilizando para testes:
      https://zotinfogames.000webhostapp.com/tapball/logartapball.php
      Aqui está a saida utilizando usuario teste direto no php de login:
         
      [ { ID: "4", NOME: "teste", SENHA: "teste", EMAIL: "teste", DINHEIRO: "205", RECORDE: "165", CLIQUES: "64", MAIOR_NIVEL: "3", TOTAL_GANHO: "205", REGISTRADO: "1", LOGAR: "OK" } ]
      Obrigado por qualquer ajuda que vier.
    • Por luiz_paulo_andrade
      Estou desenvolvendo um app com ionic que tem uma página webview dentro de um iframe, nessa webview existe um botão de download que funciona normalmente no browser, mas no android não funciona. Creio que o Android esteja bloqueando esse download, gostaria de saber como habilitar para que o download seja feito diretamente, como faz no browser.
    • Por Bruno S. Ferreira
      Boa noite.
      Estou com uma dúvida e já vi vídeos no youtube que só enrolam e o que encontrei no google não fui capaz de captar corretamente.
      Eu sei fazer app para android (básico e tal)
      Mas seu eu quero publicar para iphone eu tenho estas dúvidas:
      ---Eu preciso ter obrigatoriamente um macbook?
      ---Eu preciso criar todo o app do zero ou poderia uma o app do android?(sei que tem o lance da chave de lá tb mas basicamente a estrutura)
      O iphone teria a opção de instalar diretamente o app sem a necessidade de estar publicado na apple store, como da pra fazer no android (onde desabilita uma opção de segurança)

      pq das duvidas... eu não tenho mac, não posso comprar um agora,
      Eu uso o celular para rodar os app android e testá-los pq se eu usar o próprio pc ele trava por falta de memória e como não tenho um iphone e não compraria só pra verificar se o app fuinciona estaria fora de cogitação tb
       
      obrigado quem puder responder
×

Informação importante

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