我想實現這個場景對我的申請。我想安排我的服務在電話啓動時啓動,並且每當另一個應用程序調用我的服務時,我希望我的服務能夠在項目中啓動某個活動。創建類似服務守護進程Android應用程序
所以爲了清楚。我想創建一個項目,其中包含一個服務,該服務在電話啓動時運行,並處於休眠狀態,正在偵聽來自第三方應用程序的呼叫。而每當電話收到該服務調用的活動(從同一個項目,而不是第三方)
如何配置我的清單文件,以實現這一目標?
我也碰到過這樣的suggestion但我的情況是相當不同的。
非常感謝你提前
我想實現這個場景對我的申請。我想安排我的服務在電話啓動時啓動,並且每當另一個應用程序調用我的服務時,我希望我的服務能夠在項目中啓動某個活動。創建類似服務守護進程Android應用程序
所以爲了清楚。我想創建一個項目,其中包含一個服務,該服務在電話啓動時運行,並處於休眠狀態,正在偵聽來自第三方應用程序的呼叫。而每當電話收到該服務調用的活動(從同一個項目,而不是第三方)
如何配置我的清單文件,以實現這一目標?
我也碰到過這樣的suggestion但我的情況是相當不同的。
非常感謝你提前
**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);
}
}
通過創建可以執行服務啓動一個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>
這允許你運行一個活動,然後你可以從該活動啓動前臺服務。我只是設置了這個例子,因爲我已經準備好了,您可以根據需要調整它以運行服務。
*「......偵聽來自第三方應用的調用。」 *你說什麼叫? '上下文#startService()'? – pskink
是的,這是一個2應用程序套件。一個主要的(第三方應用程序)。我詢問的這項服務和活動提供了額外的功能,但只能從第三方應用程序調用。我希望我清楚 – Libathos
所以你不需要通過「開始」你'Service'並調用其'onStartCommand'方法來「監聽呼叫」,該OS這樣做, – pskink