2016-01-21 61 views
2

我的問題是,我需要我的應用程序總是爲喚醒接收通知,因爲我想創建像WhatsApp的聊天應用程序,但是當應用程序被關閉的通知不工作,我已經閱讀http://developer.android.com/intl/es/guide/components/services.htmlhttp://developer.android.com/intl/es/guide/components/processes-and-threads.html,我還以爲如果我創建等工藝加工而成的android:上GcmListenerService進程屬性,我可以保活的服務,但沒有奏效如何在android上保持始終清醒的GcmListenerService?

,我想到的是覆蓋從GcmListenerService的onStartCommand方法的另一種方式,並返回START_STICKY不斷

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

    return START_STICKY; 
} 

但這種方式的問題是,GcmListenerService具有onStartCommand法最後,所以我不能覆蓋該方法

等Android文檔沒有解決這個問題?

唯一一個解決方案,我能找到的就是去上我的手機設置,之後進入省電---->保護的應用程序,並檢查我的應用程序,以保持我的應用程序,即使工作時我的應用程序被關閉

所以任何人都可以解決這個問題? 感謝

編輯#2

<?xml version="1.0" encoding="utf-8"?> 
<manifest xmlns:android="http://schemas.android.com/apk/res/android" 
    package="schan.main" 
    > 
    <uses-sdk android:minSdkVersion="15" android:targetSdkVersion="17"/> 
    <permission android:name="schan.main.permission.C2D_MESSAGE" 
     android:protectionLevel="signature" /> 
    <uses-permission android:name="schan.main.permission.C2D_MESSAGE" /> 
    <uses-permission android:name="com.google.android.c2dm.permission.RECEIVE" /> 
    <uses-permission android:name="android.permission.WAKE_LOCK" /> 
    <uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" /> 
    <application 
     android:allowBackup="true" 
     android:icon="@mipmap/ic_launcher" 
     android:label="@string/app_name" 
     android:supportsRtl="true" 
     android:theme="@style/Theme.Schan"  > 
     <activity 
      android:name=".MainActivity" 
      android:label="@string/app_name"> 
      <intent-filter> 
       <action android:name="android.intent.action.MAIN" /> 

       <category android:name="android.intent.category.LAUNCHER" /> 
      </intent-filter> 
     </activity> 
     <receiver 
      android:name="com.google.android.gms.gcm.GcmReceiver" 
      android:exported="true" 
      android:permission="com.google.android.c2dm.permission.SEND"> 
      <intent-filter> 
       <action android:name="com.google.android.c2dm.intent.RECEIVE" /> 

       <category android:name="schan.main" /> 
      </intent-filter> 
      <action android:name="com.google.android.c2dm.intent.REGISTRATION" /> 
     </receiver> 
     <service 
      android:name="schan.main.MyGcmListenerService" 
      android:exported="false"> 
      <intent-filter> 
       <action android:name="com.google.android.c2dm.intent.RECEIVE" /> 
       <action android:name="android.intent.action.BOOT_COMPLETED"/> 
      </intent-filter> 
     </service> 
     <service 
      android:name="schan.main.MyInstanceIDListenerService" 
      android:exported="false"> 
      <intent-filter> 
       <action android:name="com.google.android.gms.iid.InstanceID" /> 
      </intent-filter> 
     </service> 
     <service 
      android:name="schan.main.RegistrationIntentService" 
      android:exported="false"> 
     </service> 
     <activity 
      android:name=".LoginActivity" 
      android:icon="@mipmap/ic_launcher" 
      android:label="@string/login" 
      android:parentActivityName=".MainActivity" 
      android:theme="@style/Theme.Schan" > 
      <meta-data 
       android:name="android.support.PARENT_ACTIVITY" 
       android:value="schan.main.MainActivity" /> 
     </activity> 
     <activity 
      android:name=".SigupActivity" 
      android:label="@string/joinus" 
      android:parentActivityName=".MainActivity" > 
      <meta-data 
       android:name="android.support.PARENT_ACTIVITY" 
       android:value="schan.main.MainActivity" /> 
     </activity> 
     <activity 
      android:name=".Alert" 
      android:theme="@android:style/Theme.Translucent.NoTitleBar" 
      android:label="@string/title_activity_alert_dialog" > 
     </activity> 
    </application> 
</manifest> 

UPDATE

我找到了我真正的問題,這是一個how can i put this configuration on my huawei cellphone?

+1

即使應用程序關閉,也應該觸發你的'GcmReceiver'。我現在正在測試它,配置與您的配置完全一樣,並且對我來說很合適。顯示你的'GcmReceiver'類的樣子。 –

+0

@DanielNugent感謝您的回答,我的手機不能正常工作,這只是工作,如果我的應用程序被打開或如果這是在幕後,但如果這是完全關閉我沒有收到任何通知 – hvar90

+0

@DanielNugent我沒有GcmReceiver類,我用com.google.android.gms.gcm.GcmReceiver包我有GcmListenerService類 – hvar90

回答

0

好那是什麼廣播接收機彪做。你可能忘記了或與接收器相關的地方不匹配,但你還沒有提供足夠的代碼,所以很難說。

我還會建議您嘗試縮小您遇到的問題。你不能假設手機設置是最後的解決方案。 Android和谷歌爲你開發了一個偉大的框架,所以使用它...

+0

感謝您的回答,我編輯了我的答案,並從清單中放入了代碼。xml我的代碼就像android文檔的例子,當我說關於手機設置我的意思是一個解決方案,但我正在尋找一個android解決方案,抱歉的誤解 – hvar90

相關問題