Запустите приложение, когда устройство включено или разблокировано - PullRequest
2 голосов
/ 10 ноября 2011

1.Как запустить / открыть приложение, когда устройство только открыто?

2.Как запустить / открыть приложение, когда устройство только что разблокировано / выйти из состояния блокировки?

(Я имею в виду, как распознать эти события?)

10q,

David

Это мой новый код:

В манифесте:

<receiver
  android-permission="android.permission.RECEIVE_BOOT_COMPLETED"
  android:name="BootReciver" >
  <intent-filter >
      <action android:name="android.intent.action.BOOT_COMPLETED" />
      <action android:name="android.intent.action.SCREEN_ON" />
  </intent-filter>
</receiver>

В BootReciver.java я добавил в свой проект:

package development.Grandpa;
import android.content.BroadcastReceiver;

    public class BootReciver extends BroadcastReceiver {
    public void onReceive(Context context, Intent intent) {
        Intent intent1 = new Intent(context, Grandpa.class);
        context.startActivity(intent1);      
    }
}

Где класс Grandpa - это моя основная деятельность.

Кроме того, я запускаю код непосредственно намое устройство и вот что я получаю в LogCat:

?? - ????: ??: ??. ???: INFO / (): невозможно открыть лог-устройство '/ dev / log / main': нет такого файла или каталога

Я также пытался добавить один получательдля загрузки и еще один для ScreenOn (с двумя классами), как это:

<receiver
android:name="ScreenOnReciver" >
    <intent-filter >
    <action android:name="android.intent.action.SCREEN_ON" />
</intent-filter>
</receiver>

<receiver
android-permission="android.permission.RECEIVE_BOOT_COMPLETED"
android:name="BootReciver" >
<intent-filter >
    <action android:name="android.intent.action.BOOT_COMPLETED" />
</intent-filter>
 </receiver>

Но это также не помогло.

Редактировать:

Это то, что яВхожу в logcat после:

1.Запустите приложение

2.Выйдите из приложения

3. Экран блокировки

4. Экран разблокировки

11-13 23:59:26.140: ERROR/AndroidRuntime(3640): Set to default setting_6 : region=-   Duser.region=IL propRegn=IL
11-13 23:59:26.710: ERROR/AndroidRuntime(3649): Set to default setting_6 : region=-Duser.region=IL propRegn=IL
11-13 23:59:33.246: ERROR/power(244): *** set_screen_state 0
11-13 23:59:33.246: ERROR/SensorManager(244): unregisterListener:: all sensors,    listener = com.android.server.PowerManagerService$13@40517118
11-13 23:59:33.593: ERROR/LockPatternKeyguardView(244): Phone is boot completed. so can   send broadcast message for music player
11-13 23:59:35.286: ERROR/power(244): *** set_screen_state 1
11-13 23:59:35.286: ERROR/SensorManager(244): registerListener :: handle = 3  name=     GP2A Light Sensor delay= 200000 Listener=   com.android.server.PowerManagerService$13@40517118
11-13 23:59:35.286: ERROR/SensorManager(244): reg :: handle = 3
11-13 23:59:35.336: ERROR/LockPatternKeyguardView(244): Phone is boot completed. so can  send broadcast message for music player
11-13 23:59:36.360: ERROR/SlidingTab(244): onTouchEvent() : thresholdReached !
11-13 23:59:36.380: ERROR/KeyguardViewMediator(244): Phone is boot completed. so can   broadcast
11-13 23:59:36.400: ERROR/MTPRx(3319): In MtpReceiverandroid.intent.action.USER_PRESENT
11-13 23:59:36.410: ERROR/MTPRX(3319): Battery charging. plugType = 2
11-13 23:59:36.410: ERROR/MTPRx(3319): USB charging
11-13 23:59:36.416: ERROR/MTPRx(3319): usb is connected, set value in Settings.System,   result = true
11-13 23:59:36.416: ERROR/MTPRx(3319): usb mode = 0
11-13 23:59:36.416: ERROR/MTPRx(3319): usb debugging is enabled

Edit2:

У меня есть только эти "исключения" в logcat:

11-14 00:22:15.313: WARN/WindowManager(244): android.view.InflateException: Binary XML  file line #7: Error inflating class <unknown>
11-14 00:22:15.313: WARN/WindowManager(244): Caused by: java.lang.reflect.InvocationTargetException
11-14 00:22:15.313: WARN/WindowManager(244): Caused by:   android.content.res.Resources$NotFoundException: Resource is not a Drawable (color or   path): TypedValue{t=0x2/d=0x1010059 a=-1}

1 Ответ

7 голосов
/ 10 ноября 2011

То, что вы хотите сделать, это настроить BroadcastReceiver, который прослушивает эти действия.Дополнительная информация:

для вашей ситуации у вас будет приемник

public class YourReceiver extends BroadcastReceiver {
    @Override
    public void onReceive(Context context, Intent intent) {
        Intent intent = new Intent(context, YourActivity.class);
        context.startActivity(intent);
    }
}

и зарегистрируйте его в своем манифесте:

    <receiver
        android-permission="android.permission.RECEIVE_BOOT_COMPLETED"
        android:name="YourReceiver" >
        <intent-filter >
            <action android:name="android.intent.action.SCREEN_ON" />
            <action android:name="android.intent.action.BOOT_COMPLETED" />
        </intent-filter>
    </receiver>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...