Когда пользователь открывает приложение, служба запускается без проблем. Однако при загрузке приемника, хотя я вижу уведомление о запуске службы, когда я открываю «отслеживаемое приложение», оно не перенаправляется на экран моего приложения. Я подозреваю, что приложение не может достичь конечной точки флаттера, или по какой-то причине «домашняя» посадка не началась, поэтому я не могу открыть экран в приложении.
Вот мой основной код активности:
Код: Выделить всё
override fun onCreate(savedInstanceState: Bundle?) {
Log.d("MainActivity", "onCreate called")
super.onCreate(savedInstanceState)
appControlAccessor.loadAppGroups(this)
checkAndStartService()
// Handle intent extras and pass them to Flutter
handleIntentExtras(intent)
}
override fun configureFlutterEngine(flutterEngine: FlutterEngine) {
Log.e("MainActivity", "configureFlutterEngine")
super.configureFlutterEngine(flutterEngine)
MethodChannel(flutterEngine.dartExecutor.binaryMessenger, CHANNEL).setMethodCallHandler { call, result ->
...
}
Код: Выделить всё
override fun onCreate() {
super.onCreate()
Log.d("AppMonitoringService", "App monitoring service created")
registerScreenStateReceiver()
monitorApps()
}
override fun onStartCommand(intent: Intent?, flags: Int, startId: Int): Int {
Log.d("AppMonitoringService", "On start command called")
val notification = buildServiceNotification()
startForeground(1, notification)
return START_STICKY
}
Код: Выделить всё
private fun showChallengeSelectionPage(appPackage: String, timeGranted: Int, tracker: AppControlGroupTracker) {
Log.d("AppMonitoringService", "Showing challenge page for $appPackage and tracker id ${tracker.group.id}")
val intent = Intent(this, MainActivity::class.java)
intent.putExtra("route", "/challengeSelection")
intent.flags = Intent.FLAG_ACTIVITY_NEW_TASK or Intent.FLAG_ACTIVITY_CLEAR_TASK or Intent.FLAG_ACTIVITY_CLEAR_TOP
startActivity(intent)
}
Код: Выделить всё
class MyApp extends StatelessWidget {
const MyApp({super.key});
@override
Widget build(BuildContext context) {
return MaterialApp(
...
home: HomePage(),
routes: {
...
"/challengeSelection": (context) => ChallengeSelectionPage(),
},
);
}
}
Код: Выделить всё
class BootUpReceiver : BroadcastReceiver() {
override fun onReceive(context: Context, intent: Intent) {
try {
context.stopService(Intent(context, AppMonitoringService::class.java))
} catch (e: Exception) {
e.printStackTrace()
Log.e("BootUpReceiver", "Error stopping service: ${e.message} ; " + e.stackTraceToString())
}
val serviceIntent = Intent(context, AppMonitoringService::class.java)
context.startForegroundService(serviceIntent)
}
}
Подробнее здесь: https://stackoverflow.com/questions/797 ... lutter-app
Мобильная версия