2015-12-30 12 views
5

Sto tentando di creare l'intento di creare un sms con compatibilità per livelli API superiori a KitKat. Il codice funziona, ma ho ricevuto un avviso che richiede il livello API 19. Ho provato a risolverlo con @TargetApi(Build.VERSION_CODES.KITKAT) ma ho ricevuto un avviso "Annotations non sono consentiti qui".Sopprimere l'avviso di livello API nel codice

C'è un modo semplice per ignorare questo avviso?

private boolean apLowerThanKitKat = (Build.VERSION.SDK_INT < android.os.Build.VERSION_CODES.KITKAT); 

Intent smsIntent = new Intent(android.content.Intent.ACTION_SEND); 
if (apLowerThanKitKat) 
{ 
    smsIntent.setPackage("vnd.android-dir/mms-sms"); 
} 
else 
{ 
    //@TargetApi(Build.VERSION_CODES.KITKAT) 
    smsIntent.setPackage(Telephony.Sms.getDefaultSmsPackage(getActivity())); 
} 

Grazie in anticipo!

risposta

8

Non utilizzare un valore booleano per il controllo API. Mettilo direttamente nella dichiarazione if:

if (Build.VERSION.SDK_INT < android.os.Build.VERSION_CODES.KITKAT) 
{ 
    smsIntent.setPackage("vnd.android-dir/mms-sms"); 
} 
else 
{ 
    smsIntent.setPackage(Telephony.Sms.getDefaultSmsPackage(getActivity())); 
} 

Questo dovrebbe far sparire l'avviso. annotazioni TargetApi dovrebbe essere fatto a livello di metodo:

@TargetApi(Build.VERSION_CODES.KITKAT) 
public void yourKitkatMethod() {} 
+1

Provato per essere intelligente e migliorare la leggibilità utilizzando il booleano: p Ma funziona perfettamente, grazie! – TheTool

+0

@TheTool stato lì :) – jlhonora

+0

TargetApi può essere utilizzato anche a livello di classe – Flo354

3

annotazione deve essere su un metodo

private boolean apLowerThanKitKat = (Build.VERSION.SDK_INT < android.os.Build.VERSION_CODES.KITKAT); 

Intent smsIntent = new Intent(android.content.Intent.ACTION_SEND); 
if (apLowerThanKitKat) 
{ 
    smsIntent.setPackage("vnd.android-dir/mms-sms"); 
} 
else 
{ 
    kitkatSetPackage(): 
} 

@TargetApi(Build.VERSION_CODES.KITKAT) 
private void kitkatSetPackage() { 
    smsIntent.setPackage(Telephony.Sms.getDefaultSmsPackage(getActivity())); 
} 

è possibile spostare questa annotazione ad altri metodi (se tutto questo codice è in un metodo), o mettere l'annotazione sulla classe è di per sé.

+0

Questa risposta grandi opere pure, ma la risposta accettata è un po 'più veloce da implementare. – TheTool

-1

** Metti ur codice in un metodo **

@TargetApi (Build.VERSION_CODES.KITKAT) public void xyzMethod() { il codice qui }

che lavorerà ora

Problemi correlati