2016-12-22 4 views
1

私はアンドロイドパッケージアップデートアプリケーションを持っています。新しいアンドロイド版やバグ修正パッケージを公開することがあります。その後、ユーザーはパッケージをダウンロードし、パッケージをロードします。また、フォースアップデートを公開し、パッケージをダウンロードしてロードしました。 ブロードキャストとサービスを使用してサーバーと通信する必要があります。アンドロイドデバイスonopen、実行アプリケーション

アプリケーションが以前に一度だけ実行された場合は正しく動作します。しかし、何かを報告するためのデバイスに関する情報が必要です。ユーザーがアプリケーションを実行しないと、サービスは機能しません。だからアプリは正しく動作しません。

このためには、アンドロイドデバイスが開かれるとすぐにアプリケーションを実行する必要があります。サービスがアクティブになります。そして、アプリは適切に動作します。

アップデートパッケージは、さまざまな会社から当社に提供されます。パッケージがロードされるとすぐにアプリケーションを起動するようにパッケージを変更する必要がありますか?

+0

[アプリが実行されなかったときにAndroidサービスとブロードキャストを開始できるかどうか](http://stackoverflow.com/questions/32111094/is-it-possible-starting-android-service-and-broadcast) -when-app-did-not-run-befor) –

+0

この質問は私に属していました:)それは別の状況です。私はコメント –

答えて

0

サービスがダウンロードされるとすぐに開始できるかどうかを尋ねる場合は、不可能です。アプリケーションが起動されていないときにコードを実行するにはどうすればよいですか?

編集:

あなたは、デバイスをブートした後にアプリを起動するために行うことができますすべてはあなたのマニフェストではインテントフィルタと受信を設定されています。

<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

の下に掲載しました。私はこの状況を知っています。私は私のサービスが走るとは思わない。私の問題は、アンドロイドOSがロードされた後です。たとえば、アンドロイド5〜アンドロイド6.また、バージョンを6.0から6.1に変更します。バージョン変更レポートを入手したいしかし、バージョン変更後にアプリケーションが起動せず、サービスが実行されません。このために、私はどのように私のアプリを起動することができますアンドロイドOSがロードされます。私はこの問題がアプリ側に関連していなかったことを知っています。私たちの会社へのプロバイダアンドロイドのパッケージは、彼らのパッケージを変更する必要がありますか? AndroidのOSがロードされた後、このパッケージを編集してアプリケーションを起動することはできますか? –

+0

私は自分の答えを更新しました。それは、デバイスを起動した後にアプリケーションを実行することは可能ですが、アプリケーションが更新の後にも実行されるかどうかは不明です。私はまた、可能な代替ソリューションを追加しました –

+0

あなたのソリューションを使用します。私は更新後のサービス作業がすべてのデバイスをバージョンアップするかどうかをテストします。多くのデバイスが動作します。このために、私はアンドロイドパッケージ側のアップデート後にスタートアプリを検討していました。 Androidパッケージにはupdates-scriptが含まれています。私はこの面から研究に励んでいきます。 –

関連する問題