Jump to content
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>

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

  • Similar Content

    • By Rogerio Pereira Cardoso
      Bom dia!

      Sou novo no forum e estou aprendendo a criar aplicativos para Android. Eu gostaria de saber se existe uma forma de criar um aplicativo que exclui uma determinada pasta no android.
    • By ELT_Yuken
      Bom, eu estou aprendendo js pelo celular da minha mãe, eu gostaria de saber como faço para criar botões que repetem uma função até eu tirar o dedo dele
    • By JuanAlmeida
      Eaí, eu vim pedir ajuda aqui porque não encontro em nenhum lugar nada para me ajudar. Eu consigo desenvolver no Android Studio tranquilamente, so que o emulator não abre de jeito nenhum, no caso abre. Mas a tela fica preta; Igual a foto. Minha config é Q6600 + 8GB RAM + GT 610 2GB, embora não seja moderna, ela seria o suficiente pra rodar o emulator. Alguem pode me dizer o que é?

    • By T635
      Estou desenvolvendo um app para medir os batimentos do usuário por meio de um sensor em seu smartwatch. Entretanto estou com um bug na linha 36, e não faço a mínima ideia de como resolver.
      O link do código é esse:
      https://pastebin.com/gwEzhCdh
    • By joaohouto
      Olá, pessoal!
       
      Estou dando início a minha caminhada no desenvolvimento nativo para Android, e durante esse percurso encontrei certa dificuldade ao tentar exibir uma notificação simples.
      Segue o código:
       
      //imports public class MainActivity extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); Toolbar toolbar = findViewById(R.id.toolbar); setSupportActionBar(toolbar); gerarNotificacao(); } @Override public boolean onCreateOptionsMenu(Menu menu) { getMenuInflater().inflate(R.menu.menu_main, menu); return true; } @Override public boolean onOptionsItemSelected(MenuItem item) { int id = item.getItemId(); //noinspection SimplifiableIfStatement if (id == R.id.action_settings) { return true; } return super.onOptionsItemSelected(item); } public void gerarNotificacao(){ NotificationCompat.Builder builder = new NotificationCompat.Builder(this) .setSmallIcon( R.drawable.ic_launcher ) .setTicker( "Título ticker de teste" ) .setContentTitle( "Título de teste" ) .setContentText( "Texto de corpo - teste" ) .setAutoCancel( true ); int id = 1; NotificationManager notifyManager = (NotificationManager) getSystemService(NOTIFICATION_SERVICE); notifyManager.notify( id, builder.build() ); } }  
      Obs.: Esse é um código exemplo que achei em um site aleatório da internet
      Bom, ao iniciar a tela principal a notificação não é exibida, por quê?
       
      Agradeço a quem puder ajudar. :D
×

Important Information

Ao usar o fórum, você concorda com nossos Terms of Use.