Можно ли запустить приложение для Android из встроенного приложения Phone Call Log? - PullRequest
3 голосов
/ 21 февраля 2010

Я хотел бы знать, возможно ли запустить мое приложение, когда новая запись записывается в журнал телефонных звонков (т.е. исходящий, входящий или пропущенный звонок).

Я написал приложение для управления записями журнала вызовов в соответствии с предпочтениями пользователя, прослушав публикацию событий android.intent.action.PHONE_STATE . Мое приложение работает нормально, пока его процесс работает. Однако, если пользователь остановил мое приложение с помощью приложения-убийцы задач, то записи журнала не могут управляться, так как само мое приложение не было запущено. Мне нужен способ убедиться, что мое приложение запускается в фоновом режиме, если оно еще не запущено, когда происходит android.intent.action.PHONE_STATE .

Или можно запустить мое приложение как сервис, который всегда работает?

Заранее спасибо. Bala

Ответы [ 2 ]

2 голосов
/ 21 февраля 2010

Вы можете запустить свое приложение как Сервис:

http://developer.android.com/reference/android/app/Service.html

Вот базовая реализация сервиса:

public class MyService extends Service
{
    @Override
    public IBinder onBind(Intent intent)
    {
        return null;
    }

    @Override
    public void onCreate()
    {
        super.onCreate();
        Log.i("Service", "Service is starting");
    }

    @Override
    public void onDestroy()
    {
        super.onDestroy();
        Log.i("Service", "Service stopped");
    }
}

AndroidManifest.xml

<application ....>
    <service android:name=".App.MySyncService" />
</application>
0 голосов
/ 21 февраля 2010

Однако, если пользователь остановил мой приложение с задачей-убийцей приложение, то записи журнала могут не быть управляемым, как само мое приложение было не работает.

С этим ничего не поделаешь. То же самое произойдет, если пользователь отключит вашу службу через страницу Настройки> Приложения.

Мне нужен способ убедиться, что мой приложение запускается в фон, если это еще не работает, когда android.intent.action.PHONE_STATE происходит.

Вы можете попытаться настроить BroadcastReceiver для этого намерения в манифесте и настроить его на управление до некоторого IntentService для обработки. Это тот же шаблон, который я использую для AlarmManager ( пример кода здесь ), только с другим триггером. Я не пробовал этот конкретный Intent, поэтому не могу быть уверен, что техника работает. Однако, если это произойдет, то это будет огромным преимуществом, поскольку большую часть времени не будет обслуживать ваш сервис (IntentService отключится, когда его работа будет завершена), что порадует пользователей, убивающих задачи.

Или можно запустить мой приложение как услуга, которая всегда работает?

Нет, потому что пользователи контролируют свои устройства, а не вы или я.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...