Я использую NativeScript, просто чтобы вы знали, для начала ориентируюсь на Android.
Я пытался прочитать это, но это просто невозможно понять. Документация Android вместе со всеми другими ответами на SO просто неполны. Я занимаюсь этим несколько дней.
Цель приложения
Я хочу, чтобы мое приложение что-то делало при получении нового SMS, независимо от того, находится ли пользователь в приложение, имеет приложение в действии, но не на переднем плане, если приложение вообще не работает.
Хронологический порядок
- Пользователь включает смартфон.
- Пользовательские загрузки приложение.
- Пользователь открывает приложение в первый раз.
- Приложение должно теперь после открытия приложения работать и делать что-то всякий раз, когда приходит SMS, независимо от того, находится ли пользователь в приложении, есть ли он жив, но не на переднем плане или убил приложение или даже когда экран смартфона выключен, а блокировка включена.
- Пользователь забыл зарядить смартфон, поэтому смартфон умирает, пользователь заряжает смартфон и поворачивается Смартфон включен.
- Приложение должно сразу начать работать на BOOT, что-то делать, если пришло новое SMS r получен без необходимости открывать приложение.
Мне еще предстоит найти информацию о том, как решить вышеуказанную ситуацию на простом примере.
Я не возражаю против службы ( Полагаю, мне нужно) находиться в основном потоке пользовательского интерфейса.
Что я пробовал
Манифест:
<uses-permission android:name="android.permission.RECEIVE_SMS" />
<uses-permission android:name="android.permission.SEND_SMS" />
<uses-permission android:name="android.permission.INTERNET"/>
<uses-permission android:name="android.permission.READ_PHONE_STATE"/>
<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />
<application
android:name="com.tns.NativeScriptApplication"
android:allowBackup="true"
android:icon="@drawable/icon"
android:label="@string/app_name"
android:theme="@style/AppTheme">
<activity
android:name="com.tns.NativeScriptActivity"
android:label="@string/title_activity_kimera"
android:configChanges="keyboard|keyboardHidden|orientation|screenSize|smallestScreenSize|screenLayout|locale|uiMode"
android:theme="@style/NoActionBar">
<meta-data android:name="SET_THEME_ON_LAUNCH" android:resource="@style/AppTheme" />
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity android:name="com.tns.ErrorReportActivity"/>
<receiver android:name="io.basickarl.passer.ServiceStarter">
<intent-filter>
<action android:name="android.intent.action.BOOT_COMPLETED"/>
</intent-filter>
</receiver>
<service android:enabled="true" android:name="io.basickarl.passer.SMSService" />
</application>
Я продолжаю видеть следующие вещи, и они всегда используются по-разному, и все же непонятно, как их использовать:
- Service
- IntentService
- JobIntentService
- JobScheduler
JobService
Как мне запустить эту службу только один раз при первом запуске приложения, как в хронологическом шаге 4, предотвращая запуск этой службы несколько раз, и что она работает и все время прислушивается к входящим SMS?