2017-05-31 75 views
0

我有一個android服務,當我打開我的應用程序時運行,現在我想我的android服務在啓動時運行。我嘗試了下面的代碼,但是當我重新啓動我的設備時服務沒有自動運行。我無法在手機上看到它作爲服務運行!我的代碼有問題嗎?Qt android無法聽os意圖ex.RECEIVE_BOOT_COMPLETED

我添加了這些權限清單:

<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED"/> 
<uses-permission android:name="android.permission.RECEIVE_HEADSET_PLUG"/> 

這裏是我的清單中的接收器:

<receiver android:name="org.qtproject.example.MyBroadcastReceiver"> 
    <intent-filter> 
    <action android:name="android.intent.action.RECEIVE_BOOT_COMPLETED"/> 
    <action android:name="android.intent.action.RECEIVE_HEADSET_PLUG"/> 
    </intent-filter> 
</receiver> 

而這裏的MyBroadcastReceiver.java:

import android.os.Bundle; 
import org.qtproject.qt5.android.bindings.QtActivity; 
import android.content.BroadcastReceiver; 
import android.content.Context; 
import android.content.Intent; 

public class MyBroadcastReceiver extends BroadcastReceiver { 
    @Override 
    public void onReceive(Context context, Intent intent) { 
     Intent startServiceIntent = new Intent(context, org.qtproject.example.MyCustomAppService.class); 
     context.startService(startServiceIntent); 

    } 
} 
+0

你的問題是什麼? – jpo38

+0

@ jpo38我的問題是,當我重新啓動我的android設備時,服務不會自動啓動。我看不到它在我的電話服務中運行。我的代碼有問題嗎? – Mena

+0

鄧諾。但是現在你的帖子提出了一個問題,希望有人會回答。 – jpo38

回答

0

確定<action android:name="android.intent.action.BOOT_COMPLETED"/> 所以我在我的代碼2個問題:

1)由於@kajay,我不得不改變我的行動路線,他所描述的, 是: 在<action android:name="android.intent.action.BOOT_COMPLETED"/>表現。

2)我想在MyBroadcastReceiver.java中定義包。所以,這個類找不到startServiceIntent。當然,qt不會給任何錯誤或警告帶來很多java問題。 所以,在我的情況,我不得不把它添加到MyBroadcastReceiver.java:

package org.qtproject.example; 

我不得不這樣做上述兩個步驟來解決我的問題! P.S有時服務需要大約45秒或更長時間才能啓動!

1

更換 <action android:name="android.intent.action.RECEIVE_BOOT_COMPLETED"/> 與 在清單

+0

謝謝你,它與啓動工作!但是,爲什麼與 不一樣的解決方案? – Mena