2016-12-22 9 views
1

У меня есть приложение для обновления андроидного пакета. Иногда мы публикуем новые версии для Android и исправления ошибок. Затем пользователи загружают пакет и загружают пакет. Также мы публикуем обновление силы, и пакеты загружались и загружались. Он должен связываться с сервером, используя широковещание и обслуживание.когда устройство android onopen, запустить приложение

Он работает правильно, если приложение запускается раньше. Но нам нужна информация об устройствах, чтобы сообщить что-то. Если пользователь не запускает приложение, служба не будет работать. Поэтому приложение работает неправильно.

Для этого нам нужно, чтобы наше приложение запускалось, как только открылось устройство Android. Таким образом, сервис будет активным. И приложение работает правильно.

Пакеты обновления поступают в нашу компанию от разных компаний. Они должны изменить пакет для запуска моего приложения сразу после загрузки пакетов?

+0

Возможный дубликат [Возможно ли запуск службы Android и трансляции, когда приложение не запускалось до] (http://stackoverflow.com/questions/32111094/is-it-possible-starting-android-service-and-broadcast -when-app-did-not-run-befor) –

+0

этот вопрос принадлежал мне :). Это совсем другая ситуация. Я разместил ниже комментарий –

ответ

0

Если вы спрашиваете, можете ли вы запускать какие-либо службы, как только они были загружены, это невозможно. Как вы можете ожидать, что ваш код будет запущен, когда приложение не будет запущено?

Edit:

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

<application 
    android:allowBackup="true" 
    android:icon="@mipmap/ic_launcher" 
    android:label="@string/app_name" 
    android:supportsRtl="true" 
    android:theme="@style/AppTheme"> 
    <activity android:name=".MainActivity"> 
     <intent-filter> 
      <action android:name="android.intent.action.MAIN" /> 

      <category android:name="android.intent.category.LAUNCHER" /> 
     </intent-filter> 
    </activity> 

    <service 
     android:name=".blablaService" 
     android:enabled="true"/> 

    <receiver android:enabled="true" android:name=".BootUpReceiver" 
     android:permission="android.permission.RECEIVE_BOOT_COMPLETED"> 

     <intent-filter> 
      <action android:name="android.intent.action.BOOT_COMPLETED" /> 
      <category android:name="android.intent.category.DEFAULT" /> 
     </intent-filter> 
    </receiver> 
</application> 

Вы также будете нуждаться в BroadcastReceiver, поэтому добавить этот класс к источнику.

public class BootUpReceiver extends BroadcastReceiver { 

    @Override 
    public void onReceive(Context context, Intent intent) { 
     Intent i = new Intent(context, MainActivity.class); //MyActivity can be anything which you want to start on bootup... 
     i.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 
     context.startActivity(i); 
    } 

} 

Я не знаю, будет ли это работать с обновлением устройства, но это все, что возможно. Это приведет к появлению приложения при загрузке устройства.

Я также задаюсь вопросом, действительно ли это необходимо сделать, как только устройство будет обновлено? Не могли бы вы просто проверить версию Android после загрузки приложения. Затем сохраните эту версию в sharedPreferences. В следующий раз, когда вы запустите, сравните текущую версию с той, которая хранится. Если это не то же самое, обновите пакеты. Это может быть альтернативное решение.

+0

Я знаю эту ситуацию. Я не ожидаю, что мой сервис будет запущен. Моя проблема в том, что после загрузки android. Например, андроид 5 для android 6. Также версия изменяется от 6.0 до 6.1. Мы хотим получить отчет об изменении версии. Но после того, как приложение, изменяющее версию, не запускается, и служба не запускается. Для этого, как я могу запустить приложение Android andos. Я знаю, что эта проблема не была связана с приложением. Поставщик android os пакет для нашей компании должен изменить их пакет? Могу ли я отредактировать этот пакет, чтобы запустить приложение после загрузки ОС Android. –

+0

Я обновил свой ответ, можно запустить приложение после загрузки устройства, но, как указано, я не уверен, что приложение будет запущено после обновления. Я также добавил возможное альтернативное решение –

+0

Я использую ваше решение. я проверю, работает ли сервис после версии обновления всех наших устройств. Многие устройства работают. Для этого я рассматривал возможность запуска приложения после обновления на стороне пакета android. Пакет Android включает в себя обновления-скрипт. Я буду рассматривать исследования с этой стороны. –