• 01-11-2023, 11:44:06
    #1
    Bir uygulamam var telefon yeniden başlatılınca otomatikmen uygulama içindeki servisin çalışması lazım
    class BootReceiver: MybrodcastReciver() {
    override fun onReceive(context: Context?, intent: Intent?) {
    if (intent?.action == Intent.ACTION_BOOT_COMPLETED) {
    val serviceIntent = Intent(context,MyForegrounAppService::class.java)
    context?.startForegroundService(serviceIntent)
    }

    }
    } önceden böyle bir yapı var dı ama şu an çalışmıyor ne yapabilirim
  • 01-11-2023, 11:48:33
    #2
    onurgndz1905 adlı üyeden alıntı: mesajı görüntüle
    Bir uygulamam var telefon yeniden başlatılınca otomatikmen uygulama içindeki servisin çalışması lazım
    class BootReceiver: MybrodcastReciver() {
    override fun onReceive(context: Context?, intent: Intent?) {
    if (intent?.action == Intent.ACTION_BOOT_COMPLETED) {
    val serviceIntent = Intent(context,MyForegrounAppService::class.java)
    context?.startForegroundService(serviceIntent)
    }

    }
    } önceden böyle bir yapı var dı ama şu an çalışmıyor ne yapabilirim
    Chatgbt reis şöyle diyor:
    İlk olarak, sınıf adınızın "MybrodcastReciver" olması yerine "BroadcastReceiver" olması gerekiyor. İlk satırı şu şekilde güncelleyin:
    class BootReceiver : BroadcastReceiver() {
    Intent.ACTION_BOOT_COMPLETED yerine BroadcastReceiver için doğru aksiyonu kullanmalısınız. Android 10 ve sonrasında ACTION_BOOT_COMPLETED artık kullanılamaz, bu nedenle işleri düzgün çalıştırmak için REBOOT permission eklemelisiniz. Aşağıdaki şekilde güncelleyebilirsiniz:
    class BootReceiver : BroadcastReceiver() {
        override fun onReceive(context: Context?, intent: Intent?) {
            if (intent?.action == "android.intent.action.REBOOT") {
                val serviceIntent = Intent(context, MyForegroundAppService::class.java)
                context?.startForegroundService(serviceIntent)
            }
        }
    }
    Son olarak, bu işlemi gerçekleştirebilmek için manifest dosyanızda uygun izinleri eklemelisiniz. Manifest dosyanızın içinde izin eklemesi yapmalısınız:

    <uses-permission android:name="android.permission.RECEIVE_BOOT_COMP LETED" />

    Bu adımları takip ederek, telefonun yeniden başlatılması durumunda uygulamanızın servisinin başlaması gerekmelidir.
  • 01-11-2023, 12:02:56
    #3
    YasinReal adlı üyeden alıntı: mesajı görüntüle
    Chatgbt reis şöyle diyor:
    İlk olarak, sınıf adınızın "MybrodcastReciver" olması yerine "BroadcastReceiver" olması gerekiyor. İlk satırı şu şekilde güncelleyin:
    class BootReceiver : BroadcastReceiver() {
    Intent.ACTION_BOOT_COMPLETED yerine BroadcastReceiver için doğru aksiyonu kullanmalısınız. Android 10 ve sonrasında ACTION_BOOT_COMPLETED artık kullanılamaz, bu nedenle işleri düzgün çalıştırmak için REBOOT permission eklemelisiniz. Aşağıdaki şekilde güncelleyebilirsiniz:
    class BootReceiver : BroadcastReceiver() {
        override fun onReceive(context: Context?, intent: Intent?) {
            if (intent?.action == "android.intent.action.REBOOT") {
                val serviceIntent = Intent(context, MyForegroundAppService::class.java)
                context?.startForegroundService(serviceIntent)
            }
        }
    }
    Son olarak, bu işlemi gerçekleştirebilmek için manifest dosyanızda uygun izinleri eklemelisiniz. Manifest dosyanızın içinde izin eklemesi yapmalısınız:

    <uses-permission android:name="android.permission.RECEIVE_BOOT_COMP LETED" />

    Bu adımları takip ederek, telefonun yeniden başlatılması durumunda uygulamanızın servisinin başlaması gerekmelidir.
    cevabınız için teşekkürler ama maalesef REBOOT permission eklememe rağmen çalışmıyor </receiver>
    <receiver android:name=".receiver.BootReceiver"
    android:exported="true">
    <intent-filter>
    <action android:name="android.intent.action.REBOOT" />
    </intent-filter>
    </receiver>
  • 01-11-2023, 12:05:15
    #4
    onurgndz1905 adlı üyeden alıntı: mesajı görüntüle
    cevabınız için teşekkürler ama maalesef REBOOT permission eklememe rağmen çalışmıyor </receiver>
    <receiver android:name=".receiver.BootReceiver"
    android:exported="true">
    <intent-filter>
    <action android:name="android.intent.action.REBOOT" />
    </intent-filter>
    </receiver>
    Özür dilerim, yakın tarihli Android sürümlerinde "android.intent.action.REBOOT" eylemi artık kullanılamayabilir. Bu nedenle işlemi gerçekleştirmek için başka bir yaklaşım gerekebilir. Android 10 ve sonrasında, cihazın yeniden başlatılmasını işleyen uygulamalara verilen yetkiler sınırlıdır.
    Bunun yerine, cihazın yeniden başlatılmasını algılamak ve servisinizi başlatmak için "BOOT_COMPLETED" eylemini kullanabilirsiniz. Ancak, bu eylem için kullanılabilirlik Android 8 (Oreo) ve öncesinde sınırlıdır ve kullanıcı izni gerektirebilir.
    İzni manifest dosyanıza ekledikten sonra, kullanıcının bu izni kabul etmesi gerekir. İşte manifest dosyanızda izin eklemesi ve kullanıcı izni isteme kodunun nasıl eklenmesi gerektiği:
    AndroidManifest.xml:
    <uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />
    
    <application>
        <!-- ... Diğer uygulama ayarları ... -->
    
        <receiver
            android:name=".receiver.BootReceiver"
            android:enabled="true"
            android:exported="true">
            <intent-filter>
                <action android:name="android.intent.action.BOOT_COMPLETED" />
            </intent-filter>
        </receiver>
    </application>

    BootReceiver.java (veya .kt):


    class BootReceiver : BroadcastReceiver() {
        override fun onReceive(context: Context?, intent: Intent?) {
            if (intent?.action == Intent.ACTION_BOOT_COMPLETED) {
                // Servisi başlat
                val serviceIntent = Intent(context, MyForegroundAppService::class.java)
                if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
                    context?.startForegroundService(serviceIntent)
                } else {
                    context?.startService(serviceIntent)
                }
            }
        }
    }
    }
    Ayrıca, kullanıcı izni almak için bir açıklama eklemelisiniz. Kullanıcı, uygulamanın cihazın başlangıcında çalışmasına izin verip vermediğini onaylayabilir veya reddedebilir. Bu, kullanıcının uygulamanızın nasıl davranacağını belirlemesine olanak tanır.
    Kullanıcı iznini istemek için örnek bir kod parçası:

    class YourActivity : AppCompatActivity() {
        // ...
    
        fun requestBootPermission() {
            val intent = Intent(Settings.ACTION_REQUEST_IGNORE_BATTERY_OPTIMIZATIONS)
            intent.data = Uri.parse("package:" + applicationContext.packageName)
            startActivity(intent)
        }
    }
    Bu şekilde izin aldıktan sonra cihazın yeniden başlatılmasında uygulamanızın servisi başlamalıdır.

    https://chat.openai.com
  • 01-11-2023, 12:08:43
    #5
    hocam maalesef bu yapılar işe yaramaz android 8den önce çalışır ama 8den sonra çalışmazlar bana farklı bir çözüm lazım android 8 ve sonrası içinde çalışacak android 12 ve 13 ü chatgbt bilemiyor çünkü 2021 verileri ie cevap veriyor