Size: a a a

Android Developers

2020 June 23

VS

Viktor Sakharov in Android Developers
Eugene Kostyuk
Room must have
Спасибо)
источник

Q

Quarterback in Android Developers
Eugene Kostyuk
Жизненные циклы изучить?
При возврате снова запускаются те жи цыклы, крит старт резюм. Поэтому ищу что то
источник

EK

Eugene Kostyuk in Android Developers
Quarterback
При возврате снова запускаются те жи цыклы, крит старт резюм. Поэтому ищу что то
onCreate не вызывается, если ты возвращаешся на acrivity. Разве что ты его пересоздаешь, только зачем)
источник

Q

Quarterback in Android Developers
Eugene Kostyuk
onCreate не вызывается, если ты возвращаешся на acrivity. Разве что ты его пересоздаешь, только зачем)
Боттом навигейшн. При возврате на главный фрагмент
источник

EK

Eugene Kostyuk in Android Developers
Quarterback
Боттом навигейшн. При возврате на главный фрагмент
Было бы полезно уточнить это в вопросе) У тебя куча вариантов. Хранить состояние, например во viewmodel, или где-либо еще например
источник

EK

Eugene Kostyuk in Android Developers
Quarterback
Боттом навигейшн. При возврате на главный фрагмент
Или тригери показ только при создание родительской активити
источник

EK

Eugene Kostyuk in Android Developers
Переоткрытия фрагментов не влекут пересоздание родительской активити
источник

Q

Quarterback in Android Developers
@Eugene_Kostyuk Спасибо большое
источник

АМ

Артем Миницкий... in Android Developers
Подскажите что может быть не так почему purchasesList может быть равен null

object SubscriptionProvider : PurchasesUpdatedListener, BillingClientStateListener {

   lateinit private var playStoreBillingClient: BillingClient
   private lateinit var preferences: SharedPreferences

   private const val SUBSCRIPTION_ID = "*********"
   private const val HAS_SUBSCRIPTION = "has_subscription"
   private const val IS_APPROVED = "is_approved"

   var flag: Boolean = false

   fun init(context: Context) {
       preferences = context.getSharedPreferences("subscription", Context.MODE_PRIVATE)
       playStoreBillingClient = BillingClient.newBuilder(context.applicationContext)
               .enablePendingPurchases()
               .setListener(this).build()
       connectToPlayBillingService()
   }

   private fun connectToPlayBillingService(): Boolean {
       if (!playStoreBillingClient.isReady) {
           playStoreBillingClient.startConnection(this)
           return true
       }
       return false
   }

   override fun onPurchasesUpdated(billingResult: BillingResult?, purchases: MutableList<Purchase>?) {
       updatePurchases(billingResult)
   }

   private fun updatePurchases(billingResult: BillingResult?){
       if (billingResult?.responseCode == BillingClient.BillingResponseCode.OK) {
           var hasSubscription = false
           val result = playStoreBillingClient.queryPurchases(BillingClient.SkuType.SUBS)
           if (result != null && result.purchasesList != null) {
               result.purchasesList.forEach {
                   if (it.sku == SUBSCRIPTION_ID) {
                       hasSubscription = true
                       val params = AcknowledgePurchaseParams.newBuilder().setPurchaseToken(it.purchaseToken).build()
                       playStoreBillingClient.acknowledgePurchase(params) { billingResult ->
                           when (billingResult.responseCode) {
                               BillingClient.BillingResponseCode.OK -> {
                                   preferences.edit().putBoolean(IS_APPROVED, true).apply()
                                   flag = true
                                   callback?.subscribe(true)
                               }
                               else -> {
                                   preferences.edit().putBoolean(HAS_SUBSCRIPTION, false).apply()
                                   callback?.subscribe(false)
                               }
                           }
                       }

                   }
               }
           }
           preferences.edit().putBoolean(HAS_SUBSCRIPTION, hasSubscription).apply()
       }
   }

   override fun onBillingServiceDisconnected() {
   }

   override fun onBillingSetupFinished(billingResult: BillingResult) {
       updatePurchases(billingResult)
   }

   fun hasSubscription() = preferences.getBoolean(HAS_SUBSCRIPTION, false)

   fun startSubscription(activity: Activity) {
       val params = SkuDetailsParams.newBuilder().setSkusList(arrayListOf(SUBSCRIPTION_ID))
               .setType(BillingClient.SkuType.SUBS).build()
       playStoreBillingClient.querySkuDetailsAsync(params) { billingResult, skuDetailsList ->
           when (billingResult.responseCode) {
               BillingClient.BillingResponseCode.OK -> {
                   if (skuDetailsList.orEmpty().isNotEmpty()) {
                       skuDetailsList.forEach {
                           val perchaseParams = BillingFlowParams.newBuilder().setSkuDetails(it).build()
                           playStoreBillingClient.launchBillingFlow(activity, perchaseParams)
                       }
                   }
               }
               else -> {
               }
           }
       }

   }

}
источник

WS

WebDeveloper Soyler in Android Developers
Ребят, у кого-то получается зарабатывать в Play Market / App Store?
Кто-то работает сам на себя?
источник

VS

Viktor Sakharov in Android Developers
WebDeveloper Soyler
Ребят, у кого-то получается зарабатывать в Play Market / App Store?
Кто-то работает сам на себя?
Замути игру, и работай сам на себя)
источник

WS

WebDeveloper Soyler in Android Developers
Мне интересно или вы сами этим занимаетесь. Реально ли это или уже нет. Думаю из Веба перейти в мобильную разработку
источник

WS

WebDeveloper Soyler in Android Developers
Только по той причине, что хочу работать на себя
источник

VS

Viktor Sakharov in Android Developers
Изучай мобилку совместно с вебом)
источник

Н

Никита 🙃 in Android Developers
А подскажите.После notifyDataRangeChanged() происходит изменение высоты вьюхи холдера, хочу сделать к scrollToPosition
Но даже обенув RV в post, scrollToPosition не работает.
Просто не отрабатывает.
В чём может быть трабл? Кто сталкивался
источник

v

vitaly in Android Developers
есть ли какие-нибудь сплиттис-шмиттис с человеческим созданием и/или биндингом / листенерами на ремоутВьюс или готовые виджеты с большими уведомляшками?
источник

АМ

Артем Миницкий... in Android Developers
Подскажите пожалуйста если подписка через тестовую карту работает значит и обычная отработает или это совсем не обязательно?
источник

J

Jhamil in Android Developers
Need quick help, I made a style for my material edit text but the colorControl doesnt change
источник

OP

Oleg Pchelkin in Android Developers
WebDeveloper Soyler
Мне интересно или вы сами этим занимаетесь. Реально ли это или уже нет. Думаю из Веба перейти в мобильную разработку
Не думаю что скажу что то новое, но все же. Разработка и предпринимательство - разные вещи. Если у вас не получается зарабатывать на вебе своим продуктом, то не получится и на мобиле. Везде нужно продвигать продукт и тратить деньги на меркетинг, на мобилке это делать не проще. Плюс на мобилках ещё часть дохода Гугл плей вычтет с тебя)
источник

NM

Nikolai Melkov in Android Developers
умение хорошо писать код ни как не связано будет ли платить в приложении. В первую очередь нужна идея.
источник