Autore Topic: compatibilità...  (Letto 937 volte)

Offline gabric

  • Utente senior
  • ****
  • Post: 615
  • Respect: +18
    • Google+
    • Mostra profilo
    • Brancato's site
  • Dispositivo Android:
    Nexus 5 / Tablet mediacom s4
  • Play Store ID:
    Brancato's+app
  • Sistema operativo:
    window7. ubuntu
compatibilità...
« il: 02 Febbraio 2013, 17:03:28 CET »
0
salve, ho letto varie discussioni ma non ho trovato una soluzione unica.
le mie app risultano non compatibili con i tablet di fascia alta... (è una generalizzazione)

gli unici permessi da me richiesti sono invio sms e lettura rubrica
può esser il primo permesso il colpevole?
grazie
buona giornata

Offline Ricky`

  • Amministratore
  • Utente storico
  • *****
  • Post: 3489
  • Respect: +506
    • Github
    • Google+
    • rciovati
    • Mostra profilo
Re:compatibilità...
« Risposta #1 il: 02 Febbraio 2013, 17:14:24 CET »
+3
Direi proprio di si.
Come indicato nella documentazione, il permesso SEND_SMS implica che venga richiesta la feature android.hardware.telephony.

Per risolvere ti conviene inserire nel manifest:

Codice (XML): [Seleziona]
<uses-feature android:name="android.hardware.telephony" android:required="false" />
E a runtime attivare/disattivare la funzionalità che invia l'sms, verificando se il device ha effettivamente la possibilità di mandarli:

Codice (Java): [Seleziona]
PackageManager pm = context.getPackageManager();

if (pm.hasSystemFeature(PackageManager.FEATURE_TELEPHONY)) {
        //Attivi la funzionalità sms
}else{
        //Disattivi la funzionalità sms
}

Offline gabric

  • Utente senior
  • ****
  • Post: 615
  • Respect: +18
    • Google+
    • Mostra profilo
    • Brancato's site
  • Dispositivo Android:
    Nexus 5 / Tablet mediacom s4
  • Play Store ID:
    Brancato's+app
  • Sistema operativo:
    window7. ubuntu
Re:compatibilità...
« Risposta #2 il: 02 Febbraio 2013, 17:18:04 CET »
0
splendido! io stavo già creando un altra versione dell'app per i tablet.
stessa cosa è anche per i diritti di chiamata?


questo controllo lo metto ìnell'activity che usa gli sms?

ho editato il codice in questo modo

 
Codice (Java): [Seleziona]
case R.id.imageView2: //sms
                       
                        PackageManager pm = Context.getPackageManager();

                        if (pm.hasSystemFeature(PackageManager.FEATURE_TELEPHONY)) {

                        num = number.getText().toString();
                                corp = corpo.getText().toString();
                               
                        if(num.contains("-")){
                                String[] vet;
                                vet = num.split("-");
                                for(int i=0; i<vet.length; i++){
                                        //System.out.println("-"+i);
                                //System.out.println(vet[i]);
                                }
                               
                                num = vet[0];
                        }
                               
                                if (num.length()>0 && corp.length()>0)
                    {Toast.makeText(getBaseContext(),
                                "Messaggio in uscita...",
                                Toast.LENGTH_SHORT).show();
                                sendSMS(num, corp);  }              
                        else
                            Toast.makeText(getBaseContext(),
                                "Inserire sia il numero che il messaggio",
                                Toast.LENGTH_SHORT).show();
                        }else{
                                //Disattivi la funzionalità sms
                                Toast.makeText(getBaseContext(),
                                "Funzione sms non disponibile in questo dispositivo",
                                Toast.LENGTH_SHORT).show();
                        }
                       
                       
                        break;

solo non riesco a referenziare context...
scrivendolo con la C maiuscola, me lo trovo, ma mi da l'errore "Cannot make a static reference to the non-static method getPackageManager() from the type Context"

provo mettendo
"getApplication().getPackageManager();"

nfine, è sufficiente questa modifica al manifest

Codice (XML): [Seleziona]
<uses-feature android:name="android.hardware.telephony" android:required="false" />
<uses-permission android:name="android.permission.READ_CONTACTS"/>
    <uses-permission android:name="android.permission.SEND_SMS"/>
« Ultima modifica: 02 Febbraio 2013, 17:27:27 CET da gabric »

Offline Ricky`

  • Amministratore
  • Utente storico
  • *****
  • Post: 3489
  • Respect: +506
    • Github
    • Google+
    • rciovati
    • Mostra profilo
Re:compatibilità...
« Risposta #3 il: 02 Febbraio 2013, 17:39:06 CET »
0
Se sei in una activity puoi chiamare direttamente il metodo getPackageManager() in quanto essa stessa eredita da Context.

Offline gabric

  • Utente senior
  • ****
  • Post: 615
  • Respect: +18
    • Google+
    • Mostra profilo
    • Brancato's site
  • Dispositivo Android:
    Nexus 5 / Tablet mediacom s4
  • Play Store ID:
    Brancato's+app
  • Sistema operativo:
    window7. ubuntu
Re:compatibilità...
« Risposta #4 il: 02 Febbraio 2013, 17:43:57 CET »
0
uhm ma nell'emulatore mi da che non può mandare i messaggi... mentre prima li mandava senza problemi... dev'esserci qualcosa che non va

Offline Ricky`

  • Amministratore
  • Utente storico
  • *****
  • Post: 3489
  • Respect: +506
    • Github
    • Google+
    • rciovati
    • Mostra profilo
Re:compatibilità...
« Risposta #5 il: 02 Febbraio 2013, 18:24:02 CET »
+1
Forse quel check non funziona come dovrebbe sull'emulatore. Io comunque lo uso nella mia app e non ho avuto problemi.
Prova magari ad aggiungere anche questo controllo:

How to check if an Android device has voice capabilities - Stack Overflow
« Ultima modifica: 02 Febbraio 2013, 18:41:36 CET da Ricky` »

Offline gabric

  • Utente senior
  • ****
  • Post: 615
  • Respect: +18
    • Google+
    • Mostra profilo
    • Brancato's site
  • Dispositivo Android:
    Nexus 5 / Tablet mediacom s4
  • Play Store ID:
    Brancato's+app
  • Sistema operativo:
    window7. ubuntu
Re:compatibilità...
« Risposta #6 il: 05 Febbraio 2013, 17:56:20 CET »
0
Grazie mille, penso di aver risolto. devo fare gli ultimi test con il tablet (solo che ho msso una rom e mi spunta come un s2..) se qualcun con un tablet potesse provarla...
le applicazioni sono il cifrario di cesare e quello di vigeneré, entrambe di brancato's app
grazie