No hacer volea solicitud en última versión de Android

j_timko:

Me di cuenta de mi aplicación no estaba trabajando en Pixel 3. entré en Android Studio y emulado unos dispositivos y se dio cuenta que no está funcionando en cualquier Pie Android (API 28) dispositivos, pero funciona bien en cualquier otro. Me puse unos troncos a lo largo de mi código, y parecía que yo no estaba recibiendo una respuesta dentro de mi uso del voleo. La aplicación en sí cargas, pero no muestra ningún dato, y recibo un error

E / RecyclerView: No hay ningún adaptador unido; diseño saltarse

Mi código es

import android.content.Intent;
import android.os.Bundle;
import android.os.Handler;
import android.util.Log;
import android.support.v7.app.AppCompatActivity;
import android.view.WindowManager;
import com.android.volley.Request;
import com.android.volley.Response;
import com.android.volley.VolleyError;
import com.android.volley.toolbox.StringRequest;
import com.android.volley.toolbox.Volley;
import org.json.JSONArray;
import org.json.JSONObject;

public class MainActivity extends AppCompatActivity {
    DatabaseManagement db;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN);
        setContentView(R.layout.activity_main);
        db = new DatabaseManagement(this);
        grabData();
        new Handler().postDelayed(new Runnable() {
            @Override
            public void run() {
                Intent i = new Intent(MainActivity.this, com.hellapunk.hellapunk.feature.Main2Activity.class);
                startActivity(i);
                finish();
            }
        }, 3000);
    }

    public void grabData() {
        //Log.i("Made it", "You made it this far");
        String url = "http://hellapunk.com/listallshows.php?id=2018";
        StringRequest sr = new StringRequest(Request.Method.GET, url, new Response.Listener<String>() {
            @Override
            public void onResponse(String response) {
                try {
                    JSONArray showInfo = new JSONArray(response);
                    Log.i("Something", "response");
                    for (int i = 0; i < showInfo.length(); ++i) {
                        JSONObject showInfo1 = showInfo.getJSONObject(i);

                        if ((db.checkShow(showInfo1.getString("show_summary"),
                                showInfo1.getString("show_date"))) > 0) {
                            Log.i("Results", "Show already exists");
                        } else {
                            db.insertShows(showInfo1.getString("show_summary"),
                                    showInfo1.getString("venue_name"),
                                    showInfo1.getString("show_date"),
                                    showInfo1.getString("shows_img"),
                                    showInfo1.getString("venue_address"),
                                    showInfo1.getString("city_name"),
                                    showInfo1.getString("city_region"));
                        }
                    }
                } catch (Exception e) {
                    Log.i("Error", e.getMessage());
                }
            }
        }, new Response.ErrorListener() {
            @Override
            public void onErrorResponse(VolleyError error) {
                Log.i("TAG", ""+error);
            }
        });
        Volley.newRequestQueue(this).add(sr);

    }
}

Agarro los datos durante mi pantalla de bienvenida y lo almacenan en una base de datos local. Entonces se le llama desde el PP en la siguiente actividad. ¡Cualquier consejo será apreciado!

Kevin Coppock:

Esto se debe a que a partir de Android P, todo el tráfico de red entre su aplicación y destinos inseguros debe estar en la lista blanca de forma explícita. Ver Proteger a los usuarios con TLS por defecto en Android P .

En su código, que está haciendo una solicitud a:

http://hellapunk.com/listallshows.php?id=2018

Los http://espectáculos que el sitio no es seguro. Si uno profundiza en su LogCat es probable que encuentre un mensaje del tipo:

com.android.volley.NoConnectionError: java.io.IOException: Cleartext HTTP traffic to hellapunk.com not permitted
    at com.android.volley.toolbox.BasicNetwork.performRequest(BasicNetwork.java:177)
    at com.android.volley.NetworkDispatcher.processRequest(NetworkDispatcher.java:120)
    at com.android.volley.NetworkDispatcher.run(NetworkDispatcher.java:87)
 Caused by: java.io.IOException: Cleartext HTTP traffic to hellapunk.com not permitted
    at com.android.okhttp.HttpHandler$CleartextURLFilter.checkURLPermitted(HttpHandler.java:115)
    at com.android.okhttp.internal.huc.HttpURLConnectionImpl.execute(HttpURLConnectionImpl.java:458)
    at com.android.okhttp.internal.huc.HttpURLConnectionImpl.getResponse(HttpURLConnectionImpl.java:407)
    at com.android.okhttp.internal.huc.HttpURLConnectionImpl.getResponseCode(HttpURLConnectionImpl.java:538)
    at com.android.volley.toolbox.HurlStack.executeRequest(HurlStack.java:99)
    at com.android.volley.toolbox.BasicNetwork.performRequest(BasicNetwork.java:131)
    at com.android.volley.NetworkDispatcher.processRequest(NetworkDispatcher.java:120) 
    at com.android.volley.NetworkDispatcher.run(NetworkDispatcher.java:87) 

El intento yo mismo, no parece que los sustenta el sitio httpsconexiones, por lo que con el fin de llegar a este servidor en particular de su aplicación, se necesitarían lista blanca del hellapunk.comdominio manualmente.

En el directorio de recursos, definir un documento XML para la configuración de seguridad de la red (por ejemplo res/xml/network_security_config.xml):

network_security_config.xml :

<?xml version="1.0" encoding="utf-8"?>
<network-security-config>
    <domain-config cleartextTrafficPermitted="true">
        <domain includeSubdomains="true">hellapunk.com</domain>
    </domain-config>
</network-security-config>

Luego, en su AndroidManifest.xmlpara su aplicación, en la <application>etiqueta, añadir el atributo:

<application
    android:networkSecurityConfig="@xml/network_security_config"

A continuación, debe ser permitido para hacer peticiones inseguros a cualquier dominio especificado dentro de ese archivo.

Supongo que te gusta

Origin http://43.154.161.224:23101/article/api/json?id=182419&siteId=1
Recomendado
Clasificación