Como obter lembretes de prazos e atualizações importantes do Marketplace

.

SecurityException: SubscriptionManager – Men jeg erklærede tilladelserne

Åh min! Dette er en af ​​de tidspunkter med Android, hvor du naked slår din pande, ligesom hvad!

Dette er den officielle dokumentation for brug af SubscriptionManager.addOnSubscriptionChangedListener

Tilmeld dig ændringer i hear over aktive SubscriptionInfo poster eller til de enkelte poster selv. Når der sker en ændring, kaldes lytteren onSubscriptionsChanged-metoden straks op, hvis der har været en underretning. OnSubscriptionChanged-metoden udløses også en gang, når du kalder denne funktion.

https://developer.android.com/reference/android/telephony/SubscriptionManager#addOnSubscriptionsChangedListener(android.telephony.SubscriptionManager.OnSubscriptionsChangedListener)

Det hævder ikke, at der er brug for Android-tilladelser. Males hvis du læser dette, har du sandsynligvis set den samme stacktrace som mig i dine Crashlytics- eller PlayStore-rapporter.

java.lang.RuntimeException: 
  at android.app.ActivityThread.handleBindApplication (ActivityThread.java:6654)
  at android.app.ActivityThread.-wrap2 (Unknown Supply)
  at android.app.ActivityThread$H.handleMessage (ActivityThread.java:2084)
  at android.os.Handler.dispatchMessage (Handler.java:109)
  at android.os.Looper.loop (Looper.java:166)
  at android.app.ActivityThread.major (ActivityThread.java:7555)
  at java.lang.replicate.Technique.invoke (Technique.java)
  at com.android.inner.os.RuntimeInit$MethodAndArgsCaller.run (RuntimeInit.java:469)
  at com.android.inner.os.ZygoteInit.major (ZygoteInit.java:963)
Brought on by: java.lang.SecurityException: 
  at android.os.Parcel.readException (Parcel.java:2016)
  at android.os.Parcel.readException (Parcel.java:1962)
  at com.android.inner.telephony.ITelephonyRegistry$Stub$Proxy.addOnSubscriptionsChangedListener (ITelephonyRegistry.java:491)
  at android.telephony.SubscriptionManager.addOnSubscriptionsChangedListener (SubscriptionManager.java:518)

Hmmm hvad sker der! Nå viser det sig, at tilbagekald er beskrevet som vant til at:

En lytterklasse til overvågning af ændringer i SubscriptionInfo-poster.

Males det giver dig faktisk ikke den SubscriptionInfo objekt. En anden metode gør canine: getActiveSubscriptionInfo

https://developer.android.com/reference/android/telephony/SubscriptionManager#getActiveSubscriptionInfo(int)

Og se denne metode kræver en Android-tilladelse:

Få den aktive SubscriptionInfo med enter subId.

Kræver tilladelse: READ_PHONE_STATE eller at den opkaldende app har operatørrettigheder (se TelephonyManager#hasCarrierPrivileges).
Kræver Manifest.permission.READ_PHONE_STATE

https://developer.android.com/reference/android/telephony/SubscriptionManager#getActiveSubscriptionInfo(int)

Så den første konklusion, som jeg sprang til, var, at Huawei (og leverandører, som den også sælger sin AOSP-version), har justeret deres implementering lidt, og denne lytter kommer beneath krav om tilladelse.

Jeg har set det ske før, det er fuldstændigt muligt, males kommer i 2020? ingen måde. Så med lidt mere grave og læsning af dokumenterne fra faktiske lytter, jeg fandt det!

Tilladelser android.Manifest.permission.READ_PHONE_STATE kræves for at #onSubscriptionsChanged kan påberåbes.

https://developer.android.com/reference/android/telephony/SubscriptionManager.OnSubscriptionsChangedListener

Du har ikke brug for sikkerhedstilladelsen for at tilføje en ændret lytter, males du har brug for tilladelsen for at din lytter kan påberåbes. Det er gnidningen.

Vi stødte på dette, fordi vi indstiller lytteren, når appen starter, males beder ikke om tilladelse, før funktionen er påkrævet (bedste UX-praksis). De praktiske løsninger, vi måtte vælge imellem, var at enten kontrollere tilladelsen, når appen startede, eller flytte lytteren til kun at lytte, når brugeren har givet tilladelse.

Glad Androiding! Og husk altid at RTFM.

Ajude a diminuir a propagação de doenças relacionadas à gripe tomando a vacina contra a gripe, geralmente gratuita com o seguro do Marketplace

.

Benefícios de saúde essenciais cobertos e serviços de cuidados preventivos disponíveis através do seguro saúde Marketplace

10 de setembro de 2020

Todos os planos oferecidos no Market cobrem um conjunto de 10 benefícios essenciais de saúde, incluindo serviços ambulatoriais para pacientes, atendimento de emergência e cuidados para gravidez, maternidade e recém-nascidos.

Continue reading

Experiência com esses quatro tipos de mudanças de vida? Você pode ser elegível para um período de inscrição especial para o resto de 2020

.