2016-12-05 6 views
1

私のアプリケーションにこのシナリオを実装したいと思います。電話機が起動したときにサービスを開始するようにスケジュールを設定したいのですが、別のアプリケーションが自分のサービスを呼び出すたびに、私のサービスでプロジェクト内の特定のアクティビティを開始するようにします。アンドロイドアプリケーション用デーモンのようなサービスを作成する

ですから、明確にするためです。私は、電話機が起動したときに実行されるサービスを含むプロジェクトを作成して、休止状態になり、サードパーティのアプリケーションからの呼び出しを待ちます。その呼び出しが受信されるたびに、このサービスはアクティビティを呼び出します(サードパーティではない同じプロジェクトから)

これを行うにはどうすればよいですか?

私もこのsuggestionに出くわしましたが、私のシナリオはかなり異なっています。

を使用すると、サービスの起動を行うことができBroadcastReceiverを作成することにより、事前

+0

* "...第三者のアプリケーションから電話を聴いています。" *あなたはどういう意味ですか? 'Context#startService()'? – pskink

+0

はい、これは2つのアプリケーションスイートです。主なもの(サードパーティのアプリ)。そして、私が求めているこのサービスと活動は、特別な機能を提供しますが、第三者のアプリケーションからのみ呼び出されます。私は明確であることを願っています – Libathos

+0

あなたは '呼び出しを聞く '必要はないので、OSは'サービス'を開始し、その 'onStartCommand'メソッドを呼び出すことによって行います – pskink

答えて

0
**Define Service in manifest and Create the BroadcastReciever with boot complete permission and listen the intent.If boot completed start the service.** 

public class MyService extends Service { 
      Context context = this; 

      @Nullable 
      @Override 
      public IBinder onBind(Intent intent) { 
       return null; 
      } 

      @Override 
      public int onStartCommand(Intent intent, int flags, int startId) { 

       try { 
        Intent activity = new Intent(context, MyActivity.class); 
        activity.putExtra("Message", "fromService"); 
        activity.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 
        activity.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); 
        context.startActivity(activity); 
       } catch (Exception e) { 
        MyLog.printException(e); 
       } 
       return super.onStartCommand(intent, flags, startId); 
      } 



     } 
0

にありがとうございました。

public class StartupReceiver extends BroadcastReceiver { 
    @Override 
    public void onReceive(Context context, Intent intent) { 
     if (intent.getAction().equals(Intent.ACTION_BOOT_COMPLETED)) { 
      Intent i = new Intent(context, ShowActivity.class); 
      i.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 
      context.startActivity(i); 
     } 
    } 

} 

とマニフェスト

<receiver 
    android:name=".StartupReceiver" 
    android:enabled="true" 
    android:exported="true" 
    android:permission="android.permission.RECEIVE_BOOT_COMPLETED"> 
    <intent-filter> 
     <action android:name="android.intent.action.BOOT_COMPLETED" /> 
     <action android:name="android.intent.action.QUICKBOOT_POWERON" /> 

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

にこれは、あなたが活動を実行することができます、あなたは、その活動からフォアグラウンドサービスを開始することができます。私は準備が整ったのでこの例を設定しました。好きなようにサービスを実行するためにそれを適応させることができます。

関連する問題