2016-12-05 103 views
1

我想實現這個場景對我的申請。我想安排我的服務在電話啓動時啓動,並且每當另一個應用程序調用我的服務時,我希望我的服務能夠在項目中啓動某個活動。創建類似服務守護進程Android應用程序

所以爲了清楚。我想創建一個項目,其中包含一個服務,該服務在電話啓動時運行,並處於休眠狀態,正在偵聽來自第三方應用程序的呼叫。而每當電話收到該服務調用的活動(從同一個項目,而不是第三方)

如何配置我的清單文件,以實現這一目標?

我也碰到過這樣的suggestion但我的情況是相當不同的。

非常感謝你提前

+0

*「......偵聽來自第三方應用的調用。」 *你說什麼叫? '上下文#startService()'? – pskink

+0

是的,這是一個2應用程序套件。一個主要的(第三方應用程序)。我詢問的這項服務和活動提供了額外的功能,但只能從第三方應用程序調用。我希望我清楚 – Libathos

+0

所以你不需要通過「開始」你'Service'並調用其'onStartCommand'方法來「監聽呼叫」,該OS這樣做, – 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

通過創建可以執行服務啓動一個BroadcastReceiver。

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> 

這允許你運行一個活動,然後你可以從該活動啓動前臺服務。我只是設置了這個例子,因爲我已經準備好了,您可以根據需要調整它以運行服務。