Post recenti

Pagine: [1] 2 3 ... 10
1
Activity, Fragment e Intent / Re:FindViewById dalla FragmentActivity
« Ultimo post da wlf il Oggi alle 11:03 »
ViewModel, se non ho capito male, è quindi una sorta di Singleton?
2
Android Bar / Re:Domande di un dilettante allo sbaraglio
« Ultimo post da berpao il Oggi alle 08:23 »
Ciao e ben arrivato,
dunque
Citazione
Ho visto che ci sono alcuni siti che permettono di testate l'app prima della sua pubblicazione (utilissimi per i bug) sono affidabili?
Mi fai un esempio, io non ne conosco (non ho mai cercato e quindi sono un po ' disinformato). Sinceramente non so che valore aggiunto possano darti rispetto ad un emulatore, a parte forse permettere il test su più configurazioni in un colpo solo. Cmq quando mi linki qualche esempio, faccio una veloce indagine.

Citazione
Mi spiego, chi mi garantisce che poi chi testa l'app non ancora pubblicata non me la cloni e poi la pubblichi prima lui?
Nessuno! Puoi prensere precauzioni e cryptare il codice dell'app; per l'affidabilità e la serietà del sito puoi solo affidarti alle opinioni che trovi in giro, ma cmq anche queste non ti garantiscono niente

Citazione
Voi oltre Crashlytics o Crash Reporting et simili usate il testing vero e proprio o se ne può fare a meno?
Ti direi che il test, in qulunque sua forma, è importante. Crash analytics o crash reporting non sono strumenti di test veri e propri, raccolgono informazioni sui crash della tua app per permetterti di risolvere eventuali problemi fornendoti le informazioni per potere eseguire un test mirato. Invece sono strumenti utili al test il debug o le unit test, e io sinceramente non so come qualcuno possa programmare senza fare debug o test. Non puoi farne a meno.

Citazione
La pratica di acquistare recensioni positive è in uso? Ho letto la policy e il contratto ma specificatamente non è vietata (forse perchè cmq non riuscirebbero a provarla).
Premesso che ognuno può fare quello che vuole, acquistare recensioni positive fa perdere di senso al sistema di recensione. In questo modo le recensioni diventerebbero solo uno specchietto per le allodole. Se vogliamo affidarci al sistema delle recensioni, dobbiamo rispettarne le regole e le logiche, e usare il buon senso che non fa mai male :)

Citazione
Il modulo per la votazione dell'app va linkato o si può far apparire a caso da solo?
Devi linkarlo, in questa risposta su SO c'è un esempio

Citazione
Ho in mente di creare un'app che sia diversa per ogni nazione, non solo per la lingua, ma proprio per i contenuti, è possibile fare questo?
Mi spiego meglio l'app è sempre una, poi in base al paese che uno la installa i contenuti visibili saranno in parte diversi insieme alla lingua (diversi contenuti per i francesi, per i tedeschi, ecc.) ma oltre questo vorrei che durante l'installazione un utente potesse scegliere fra EU version e US version, Google consente queste cose?
Si, la''p uno la crea come vuole, basta inserire le logiche adeguate.

Citazione
Poichè si tratta di un webapp dove l'unica differenza col sito (sito che è una sorta di comparatore di prezzi) è che nell'app si può impostare la notifica push per avvisare l'utente che un determinato prodotto è di nuovo disponibile o è sceso di prezzo o ne è arrivato uno nuovo, posso aspettarmi che sia android che apple non facciano storie bocciandomela come semplicemente non vera e propria app?
Non dovresti avere problemi, non sono questi i motivi per cui una app può essere esclusa dagli store, in teoria gli store non sanno come sono state fatte le app (wqebview o codice nativo o quant'altro) e credo che non gli interessi neanche.

Citazione
Un ultima domanda tecnica, è fattibile bloccare la pubblicità a quegli utenti che invitano ad installare l'app ad almeno 5 amici?
Non so, da un punto di vista tecnico mi verrebbe da risponderti SI

Ciao e buona giornata
Paolo
3
Android Bar / Domande di un dilettante allo sbaraglio
« Ultimo post da ledbianco il Ieri alle 18:21 »
Salve, da un po' leggo il forum, io sono all'inzio di questo mondo ed ho alcuni dubbi.

Ho visto che ci sono alcuni siti che permettono di testate l'app prima della sua pubblicazione (utilissimi per i bug) sono affidabili?
Mi spiego, chi mi garantisce che poi chi testa l'app non ancora pubblicata non me la cloni e poi la pubblichi prima lui?
Voi oltre Crashlytics o Crash Reporting et simili usate il testing vero e proprio o se ne può fare a meno?

La pratica di acquistare recensioni positive è in uso? Ho letto la policy e il contratto ma specificatamente non è vietata (forse perchè cmq non riuscirebbero a provarla).

Il modulo per la votazione dell'app va linkato o si può far apparire a caso da solo?

Ho in mente di creare un'app che sia diversa per ogni nazione, non solo per la lingua, ma proprio per i contenuti, è possibile fare questo?
Mi spiego meglio l'app è sempre una, poi in base al paese che uno la installa i contenuti visibili saranno in parte diversi insieme alla lingua (diversi contenuti per i francesi, per i tedeschi, ecc.) ma oltre questo vorrei che durante l'installazione un utente potesse scegliere fra EU version e US version, Google consente queste cose?

Poichè si tratta di un webapp dove l'unica differenza col sito (sito che è una sorta di comparatore di prezzi) è che nell'app si può impostare la notifica push per avvisare l'utente che un determinato prodotto è di nuovo disponibile o è sceso di prezzo o ne è arrivato uno nuovo, posso aspettarmi che sia android che apple non facciano storie bocciandomela come semplicemente non vera e propria app?

Un ultima domanda tecnica, è fattibile bloccare la pubblicità a quegli utenti che invitano ad installare l'app ad almeno 5 amici?

4
Stanza di Benvenuto / Salve a tutti
« Ultimo post da ledbianco il Ieri alle 17:50 »
Salve e complimenti per lo splendido forum che sto leggendo da parecchi giorni.
Mi sono deciso ad iscrivermi ma sono all'inizio dell'inizio e penso che continuerò a leggere e studiare ancora per molto.
Complimenti a tutti!
5
Animation, Menu, Dialog, Notification e Toast / animazioni con codice java
« Ultimo post da Paolo Favaretto il 24 Aprile 2018, 13:20:51 CEST »
Ciao a tutti, vorrei gestire le animazioni invece che dai file xml da una classe Java, inserire ad esempio 3 animazioni è richiamarle all'occorrenza dall'activity che mi serve, qualcuno gentilmente sa spiegarmi come  si fa magari con un semplice esempio
 ?Grazie in anticipo
6
Grazie mille!
Funziona alla perfezione!


Il numero di righe corrisponde al numero di elementi di .second per cui puoi fare ubn semplice comparator:

Codice (Java): [Seleziona]
public class MioComparator implements Comparator<Pair<String, List<String>>> {
    @Override
    public int compare(Pair<String, List<String>> o1, Pair<String, List<String>> 02) {
        //Da fare: Controllo dei null
        return o1.second.size() - o2.second.size();
    }
    @Override
    public boolean equals() {
        //Da fare: Controllo dei null
        return o1.second.size() = o2.second.size();
    }
}

Inoltre ti consiglio vivamente di usare una struttura dati ad-hoc al posto di Pair<String, List<String>>:

Codice (Java): [Seleziona]
public class ElementoLista {
    public String nomeApp;
    public List<String> permessi;
}

in modo da poter accedere semplicemente a tutti gli attributi di un elemento, senza considerare che puoi aggiungere nuovi attributi in ogni istante (es. immagine dell'app):

Codice (Java): [Seleziona]
public class ElementoLista {
    public String nomeApp;
    public List<String> permessi;
    public int imageResId; //Nuovo attributo
}
7
Mappe e Geolocalizzazione / Geolocalizazzione e Posizione Real time
« Ultimo post da mufasaonline il 23 Aprile 2018, 16:00:47 CEST »
Ciao, sto prendendo confidenza con le API di google per le mappe e dopo essere riuscito ad implementare una mappa in un app, eccomi ad avere i primi problemi, in pratica vorrei che all'apertura della mappa, senza dover premere nessun bottone si aprisse la posizione corrente con uno zoom sulla propria posizione.

Al momento quello che sono riuscito a fare, è consigliare all'utente di attivare il GPS all'apertura dell app, ma appena provo ad estrapolare le coorinate ecco che l app mi va in errore.

MainActivity.java

Codice (Java): [Seleziona]
package com.example.mufas.eventome;

import android.Manifest;
import android.content.Context;
import android.content.Intent;
import android.content.pm.PackageManager;
import android.location.Criteria;
import android.location.Location;
import android.location.LocationManager;
import android.provider.Settings;
import android.support.v4.content.ContextCompat;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.util.Log;
import android.widget.Toast;

import com.google.android.gms.common.api.GoogleApiClient;
import com.google.android.gms.maps.CameraUpdate;
import com.google.android.gms.maps.CameraUpdateFactory;
import com.google.android.gms.maps.GoogleMap;
import com.google.android.gms.maps.OnMapReadyCallback;
import com.google.android.gms.maps.SupportMapFragment;
import com.google.android.gms.maps.model.BitmapDescriptorFactory;
import com.google.android.gms.maps.model.CameraPosition;
import com.google.android.gms.maps.model.LatLng;
import com.google.android.gms.maps.model.MarkerOptions;

import es.dmoral.toasty.Toasty;

public class MainActivity extends AppCompatActivity implements OnMapReadyCallback {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        SupportMapFragment mapFragment = (SupportMapFragment) getSupportFragmentManager()
                .findFragmentById(R.id.map);
        mapFragment.getMapAsync(this);

        LocationManager locationManager = (LocationManager) getSystemService(LOCATION_SERVICE);
        boolean enabled = locationManager.isProviderEnabled(LocationManager.GPS_PROVIDER);


        if (!enabled) {

            Toasty.error(getApplication(), "ATTIVA IL GPS", Toast.LENGTH_LONG, true).show();

            Intent intent = new Intent(Settings.ACTION_LOCATION_SOURCE_SETTINGS);
            startActivity(intent);

        } else {
            Toasty.success(getApplication(), "GPS Attivo", Toast.LENGTH_LONG, true).show();
        }


    }


    @Override
    public void onMapReady(GoogleMap map) {

        LocationManager locationManager;
        locationManager = (LocationManager) getSystemService(Context.LOCATION_SERVICE);

        Location location = locationManager.getLastKnownLocation(LocationManager.NETWORK_PROVIDER);
        onLocationChanged(location);

        }


        public void onLocationChanged(Location location) {

        double latitudine = location.getLatitude();
        double longitudine = location.getLongitude();
        }

}

Logat

Codice (Java): [Seleziona]
-23 15:50:16.795 12952-12952/com.example.mufas.eventome I/zzbz: Making Creator dynamically
04-23 15:50:16.805 12952-12952/com.example.mufas.eventome I/DynamiteModule: Considering local module com.google.android.gms.maps_dynamite:0 and remote module com.google.android.gms.maps_dynamite:219
    Selected remote version of com.google.android.gms.maps_dynamite, version >= 219
04-23 15:50:16.904 12952-12952/com.example.mufas.eventome I/Google Maps Android API: Google Play services client version: 12451000
04-23 15:50:16.915 12952-12952/com.example.mufas.eventome I/Google Maps Android API: Google Play services package version: 12529024
04-23 15:50:17.564 12952-12998/com.example.mufas.eventome D/OpenGLRenderer: Use EGL_SWAP_BEHAVIOR_PRESERVED: true
04-23 15:50:17.569 12952-12952/com.example.mufas.eventome W/linker: /system/vendor/lib/hw/gralloc.clovertrail.so: unused DT entry: type 0xf arg 0x62a
    /system/vendor/lib/hw/gralloc.clovertrail.so: is missing DT_SONAME will use basename as a replacement: "gralloc.clovertrail.so"
04-23 15:50:17.570 12952-12952/com.example.mufas.eventome W/linker: /system/vendor/lib/libpvr2d.so: unused DT entry: type 0xf arg 0x79b
    /system/vendor/lib/libpvr2d.so: is missing DT_SONAME will use basename as a replacement: "libpvr2d.so"
04-23 15:50:17.571 12952-12952/com.example.mufas.eventome W/linker: /system/vendor/lib/hw/gralloc.clovertrail.so has text relocations. This is wasting memory and prevents security hardening. Please fix.
04-23 15:50:17.572 12952-12952/com.example.mufas.eventome W/linker: /system/vendor/lib/libpvr2d.so has text relocations. This is wasting memory and prevents security hardening. Please fix.
04-23 15:50:17.573 12952-12952/com.example.mufas.eventome E/IMGSRV: :0: PVRDRMOpen: TP3, ret = 53
04-23 15:50:17.574 12952-12952/com.example.mufas.eventome E/IMGSRV: :0: PVRDRMOpen: TP3, ret = 54
    :0: PVRDRMOpen: TP3, ret = 54
    :0: PVRDRMOpen: TP3, ret = 54
04-23 15:50:17.598 12952-12952/com.example.mufas.eventome D/AndroidRuntime: Shutting down VM
04-23 15:50:17.606 12952-12952/com.example.mufas.eventome E/AndroidRuntime: FATAL EXCEPTION: main
    Process: com.example.mufas.eventome, PID: 12952
    java.lang.NullPointerException: Attempt to invoke virtual method 'double android.location.Location.getLatitude()' on a null object reference
        at com.example.mufas.eventome.MainActivity.onLocationChanged(MainActivity.java:73)
        at com.example.mufas.eventome.MainActivity.onMapReady(MainActivity.java:66)
        at com.google.android.gms.maps.zzak.zza(Unknown Source)
        at com.google.android.gms.maps.internal.zzaq.dispatchTransaction(Unknown Source)
        at com.google.android.gms.internal.maps.zzb.onTransact(Unknown Source)
        at android.os.Binder.transact(Binder.java:387)
        at fh.b(:com.google.android.gms.dynamite_dynamitemodulesb@12529024@12.5.29 (040700-192802242):20)
        at com.google.android.gms.maps.internal.bg.a(:com.google.android.gms.dynamite_dynamitemodulesb@12529024@12.5.29 (040700-192802242):5)
        at com.google.maps.api.android.lib6.impl.be.run(:com.google.android.gms.dynamite_dynamitemodulesb@12529024@12.5.29 (040700-192802242):5)
        at android.os.Handler.handleCallback(Handler.java:739)
        at android.os.Handler.dispatchMessage(Handler.java:95)
        at android.os.Looper.loop(Looper.java:148)
        at android.app.ActivityThread.main(ActivityThread.java:5417)
        at java.lang.reflect.Method.invoke(Native Method)
        at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616)
04-23 15:50:19.538 12952-12996/com.example.mufas.eventome W/DynamiteModule: Local module descriptor class for com.google.android.gms.googlecertificates not found.
04-23 15:50:19.547 12952-12996/com.example.mufas.eventome I/DynamiteModule: Considering local module com.google.android.gms.googlecertificates:0 and remote module com.google.android.gms.googlecertificates:4
    Selected remote version of com.google.android.gms.googlecertificates, version >= 4
04-23 15:50:19.551 12952-12996/com.example.mufas.eventome W/System: ClassLoader referenced unknown path: /data/data/com.google.android.gms/app_chimera/m/00000011/n/x86
04-23 15:50:19.605 12952-12996/com.example.mufas.eventome W/PhenotypeFlag: Bypass reading Phenotype values for flag: LogSampling__MAPS_API
04-23 15:50:19.610 12952-12996/com.example.mufas.eventome W/PhenotypeFlag: Bypass reading Phenotype values for flag: LogSampling__MAPS_API
04-23 15:50:20.092 12952-12952/com.example.mufas.eventome I/Process: Sending signal. PID: 12952 SIG: 9

Manifest.xml

Codice (Java): [Seleziona]
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.example.mufas.eventome">

    <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>

        <meta-data
            android:name="com.google.android.gms.version"
            android:value="@integer/google_play_services_version" />
        <meta-data
            android:name="com.google.android.geo.API_KEY"
            android:value="...................................................." />

    </application>

    <uses-permission android:name="android.permission.INTERNET"/>
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
    <uses-permission android:name="com.google.android.providers.gsf.permission.READ_GSERVICES"/>
    <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/>
    <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/>
    <uses-feature android:glEsVersion="0x00020000" android:required="true"/>

</manifest>

Dove sbaglio? Ripeto che vorrei mostrare la posizione aggiornata e attuale senza dover premere nulla, all apertura dell'app.... Mi potete consigliare un metodo o un esempio? Come al solito faccio grande fatica ad inerpretare le documentazioni varie.

Grazie e un saluto al forum.
8
Mappe e Geolocalizzazione / Re:Inserimento Mappa in app
« Ultimo post da berpao il 23 Aprile 2018, 12:16:30 CEST »
Ciao, ottimo, unica cosa che ti consiglio è: CAMBIA API KEY!!! Normalmente l'api key dovrebbe rimanere segreta, non ho letto la documentazione di google maps a riguarda, ma se è quello che penso io e cioè la chiave per eseguire richieste alle api di google maps in nome della tua app,non dovresti distribuirla in giro.
Ti consiglio quindi di rigenerarla, annullando quella che hai pubblicato.
Ciao
P
9
Mappe e Geolocalizzazione / Re:Inserimento Mappa in app
« Ultimo post da mufasaonline il 23 Aprile 2018, 11:53:22 CEST »
Ciao e grazie per il tuo supporto, infatti il problema era sostiure


Codice (Java): [Seleziona]
android:name="com.google.android.maps.v2.API_KEY"
            android:value="AIzaSyAsyWRjG-r76pgWC3hW-3w8_H8wlRBtcZA" />

Codice (Java): [Seleziona]
<meta-data
            android:name="com.google.android.geo.API_KEY"
            android:value="API_KEY" />

Nel manifest.xml ora la mappa si vede correttamente.
10

Il numero di righe corrisponde al numero di elementi di .second per cui puoi fare ubn semplice comparator:

Codice (Java): [Seleziona]
public class MioComparator implements Comparator<Pair<String, List<String>>> {
    @Override
    public int compare(Pair<String, List<String>> o1, Pair<String, List<String>> 02) {
        //Da fare: Controllo dei null
        return o1.second.size() - o2.second.size();
    }
    @Override
    public boolean equals() {
        //Da fare: Controllo dei null
        return o1.second.size() = o2.second.size();
    }
}

Inoltre ti consiglio vivamente di usare una struttura dati ad-hoc al posto di Pair<String, List<String>>:

Codice (Java): [Seleziona]
public class ElementoLista {
    public String nomeApp;
    public List<String> permessi;
}

in modo da poter accedere semplicemente a tutti gli attributi di un elemento, senza considerare che puoi aggiungere nuovi attributi in ogni istante (es. immagine dell'app):

Codice (Java): [Seleziona]
public class ElementoLista {
    public String nomeApp;
    public List<String> permessi;
    public int imageResId; //Nuovo attributo
}
Pagine: [1] 2 3 ... 10