OSDN Git Service

auto import from //branches/cupcake/...@131421
authorThe Android Open Source Project <initial-contribution@android.com>
Fri, 13 Feb 2009 20:57:53 +0000 (12:57 -0800)
committerThe Android Open Source Project <initial-contribution@android.com>
Fri, 13 Feb 2009 20:57:53 +0000 (12:57 -0800)
21 files changed:
res/layout/chat_view.xml
res/layout/contact_presence_activity.xml
res/values-cs/strings.xml
res/values-de/strings.xml
res/values-es/strings.xml
res/values-fr/strings.xml
res/values-it/strings.xml
res/values-ja/strings.xml
res/values-ko/strings.xml
res/values-nb/strings.xml
res/values-nl/strings.xml
res/values-pl/strings.xml
res/values-ru/strings.xml
res/values-zh-rCN/strings.xml
res/values-zh-rTW/strings.xml
res/values/strings.xml
samples/PluginDemo/res/values-nb/strings.xml
src/com/android/im/app/FrontDoorPlugin.java
src/com/android/im/app/ImApp.java
src/com/android/im/app/SigningInActivity.java
src/com/android/im/service/RemoteImService.java

index 4ae823a..3a4363d 100644 (file)
             android:layout_width="0dip"
             android:layout_height="wrap_content"
             android:layout_weight="1"
-            android:inputType="textShortMessage|textAutoCorrect|textCapSentences|textImeMultiLine"
+            android:inputType="textShortMessage|textAutoCorrect|textCapSentences|textMultiLine|textImeMultiLine"
+            android:maxLines="4"
             android:maxLength="2000"
             android:hint="@string/compose_hint"/>
 
         <Button android:id="@+id/btnSend"
             android:layout_width="wrap_content"
-            android:layout_height="wrap_content"
+            android:layout_height="fill_parent"
             android:text="@string/send" />
     </LinearLayout>
 </com.android.im.app.ChatView>
index 1f35ef4..5cccba6 100644 (file)
  * limitations under the License.
  */
 -->
-<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
+<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
     android:layout_width="fill_parent"
-    android:layout_height="wrap_content"
-    android:orientation="vertical" >
+    android:layout_height="wrap_content" >
 
     <LinearLayout
+        android:paddingLeft="15dip"
+        android:paddingTop="15dip"
+        android:paddingRight="15dip"
+        android:paddingBottom="15dip"
         android:layout_width="fill_parent"
         android:layout_height="wrap_content"
-        android:orientation="horizontal" >
+        android:orientation="vertical" >
 
         <ImageView android:id="@+id/imgAvatar"
-            android:layout_alignParentTop="true"
-            android:layout_width="58dip"
-            android:layout_height="58dip"
-            android:layout_marginRight="10dip"
+            android:layout_width="60dip"
+            android:layout_height="60dip"
+            android:padding="2dip"
             android:background="@drawable/picture_frame_background" />
 
-        <LinearLayout
+        <TextView android:id="@+id/labelName"
             android:layout_width="fill_parent"
             android:layout_height="wrap_content"
-            android:layout_marginRight="10dip"
-            android:orientation="vertical" >
+            android:layout_marginTop="12dip"
+            android:textStyle="bold"
+            android:textAppearance="?android:attr/textAppearanceMedium"
+            android:text="@string/label_username" />
 
-            <TextView android:id="@+id/labelName"
-                android:layout_width="fill_parent"
-                android:layout_height="wrap_content"
-                android:textStyle="bold"
-                android:textAppearance="?android:attr/textAppearanceLarge"
-                android:text="@string/label_username" />
+        <TextView android:id="@+id/txtName"
+            android:layout_width="fill_parent"
+            android:layout_height="wrap_content"/>
 
-            <TextView android:id="@+id/txtName"
-                android:layout_width="fill_parent"
-                android:layout_height="wrap_content"/>
+        <TextView android:id="@+id/labelStatus"
+            android:layout_width="fill_parent"
+            android:layout_height="wrap_content"
+            android:layout_marginTop="8dip"
+            android:textStyle="bold"
+            android:textAppearance="?android:attr/textAppearanceMedium"
+            android:text="@string/label_status" />
 
-            <TextView android:id="@+id/labelStatus"
-                android:layout_width="fill_parent"
-                android:layout_height="wrap_content"
-                android:textStyle="bold"
-                android:textAppearance="?android:attr/textAppearanceLarge"
-                android:text="@string/label_status" />
+        <TextView android:id="@+id/txtStatus"
+            android:layout_width="fill_parent"
+            android:layout_height="wrap_content" />
 
-            <TextView android:id="@+id/txtStatus"
-                android:layout_width="fill_parent"
-                android:layout_height="wrap_content" />
+        <TextView android:id="@+id/txtStatusText"
+            android:layout_width="fill_parent"
+            android:layout_height="wrap_content"
+            android:layout_marginRight="8dip"
+            android:layout_marginTop="4dip"
+            android:textAppearance="?android:attr/textAppearanceSmall"
+            android:maxLines="4"
+            android:textStyle="italic" />
 
-            <TextView android:id="@+id/labelClientType"
-                android:layout_width="fill_parent"
-                android:layout_height="wrap_content"
-                android:textStyle="bold"
-                android:textAppearance="?android:attr/textAppearanceLarge"
-                android:text="@string/label_client_type" />
+        <TextView android:id="@+id/labelClientType"
+            android:layout_width="fill_parent"
+            android:layout_height="wrap_content"
+            android:layout_marginTop="8dip"                
+            android:textStyle="bold"
+            android:textAppearance="?android:attr/textAppearanceMedium"
+            android:text="@string/label_client_type" />
 
-            <TextView android:id="@+id/txtClientType"
-                android:layout_width="fill_parent"
-                android:layout_height="wrap_content" />
-        </LinearLayout>
+        <TextView android:id="@+id/txtClientType"
+            android:layout_width="fill_parent"
+            android:layout_height="wrap_content" />
 
     </LinearLayout>
 
-    <TextView android:id="@+id/txtStatusText"
-        android:layout_width="fill_parent"
-        android:layout_height="wrap_content"
-        android:layout_marginRight="8dip"
-        android:layout_marginTop="4dip"
-        android:textAppearance="?android:attr/textAppearanceSmall"
-        android:maxLines="4"
-        android:textStyle="italic" />
-
-</LinearLayout>
+</ScrollView>
index 7c814c4..44ceeeb 100644 (file)
     <string name="save">"Uložit"</string>
     <string name="chat_with">"Chat s uživatelem <xliff:g id="USER">%1$s</xliff:g>"</string>
     <string name="me">"Já"</string>
+    <!-- no translation found for compose_hint (1735533889811320962) -->
+    <skip />
     <string name="contact_online">"uživatel <xliff:g id="USER">%1$s</xliff:g> je online"</string>
     <string name="contact_away">"uživatel <xliff:g id="USER">%1$s</xliff:g> je pryč"</string>
     <string name="contact_busy">"<xliff:g id="USER">%1$s</xliff:g> je zaneprázdněn"</string>
     <string name="contact_offline">"uživatel <xliff:g id="USER">%1$s</xliff:g> je offline"</string>
     <string name="contact_joined">"Uživatel <xliff:g id="USER">%1$s</xliff:g> se připojil"</string>
     <string name="contact_left">"uživatel <xliff:g id="USER">%1$s</xliff:g> odešel"</string>
-    <string name="time_stamp">"Posláno hh:mm dne EEEE"</string>
+    <!-- no translation found for time_stamp (8952691401963972802) -->
+    <skip />
     <string name="send">"Odeslat"</string>
     <string name="msg_sent_failed">"Zprávu nelze odeslat."</string>
     <string name="disconnected_warning">"Spojení se serverem bylo ztraceno. Zpráva bude odeslána, jakmile se jej podaří obnovit."</string>
index 28a80a5..5ee65b5 100644 (file)
     <string name="save">"Speichern"</string>
     <string name="chat_with">"Mit <xliff:g id="USER">%1$s</xliff:g> chatten"</string>
     <string name="me">"Eigene"</string>
+    <!-- no translation found for compose_hint (1735533889811320962) -->
+    <skip />
     <string name="contact_online">"<xliff:g id="USER">%1$s</xliff:g> ist online."</string>
     <string name="contact_away">"<xliff:g id="USER">%1$s</xliff:g> ist abwesend."</string>
     <string name="contact_busy">"<xliff:g id="USER">%1$s</xliff:g> ist beschäftigt."</string>
     <string name="contact_offline">"<xliff:g id="USER">%1$s</xliff:g> ist offline."</string>
     <string name="contact_joined">"<xliff:g id="USER">%1$s</xliff:g> hat Teilnahme begonnen."</string>
     <string name="contact_left">"<xliff:g id="USER">%1$s</xliff:g> hat Chat verlassen."</string>
-    <string name="time_stamp">"\'Gesendet\' hh:mm a \'am\' EEEE"</string>
+    <!-- no translation found for time_stamp (8952691401963972802) -->
+    <skip />
     <string name="send">"Senden"</string>
     <string name="msg_sent_failed">"Die Nachricht kann nicht gesendet werden."</string>
     <string name="disconnected_warning">"Verbindung zum Server getrennt. Nachrichten werden gesendet, sobald eine Online-Verbindung besteht."</string>
index 8c24c2f..6026d2d 100644 (file)
     <string name="save">"Guardar"</string>
     <string name="chat_with">"Chat con <xliff:g id="USER">%1$s</xliff:g>"</string>
     <string name="me">"Yo"</string>
+    <!-- no translation found for compose_hint (1735533889811320962) -->
+    <skip />
     <string name="contact_online">"<xliff:g id="USER">%1$s</xliff:g> está conectado"</string>
     <string name="contact_away">"<xliff:g id="USER">%1$s</xliff:g> está ausente"</string>
     <string name="contact_busy">"<xliff:g id="USER">%1$s</xliff:g> está ocupado"</string>
     <string name="contact_offline">"<xliff:g id="USER">%1$s</xliff:g> está desconectado"</string>
     <string name="contact_joined">"<xliff:g id="USER">%1$s</xliff:g> se ha unido al chat"</string>
     <string name="contact_left">"<xliff:g id="USER">%1$s</xliff:g> se ha desconectado"</string>
-    <string name="time_stamp">"\"Enviado a las\" hh:mm \"el\" EEEE"</string>
+    <!-- no translation found for time_stamp (8952691401963972802) -->
+    <skip />
     <string name="send">"Enviar"</string>
     <string name="msg_sent_failed">"No se ha podido enviar el mensaje."</string>
     <string name="disconnected_warning">"Se ha perdido la conexión con el servidor. Los mensajes se enviarán cuando se restablezca la conexión."</string>
index b73d6d0..978c1b8 100644 (file)
     <string name="save">"Enregistrer"</string>
     <string name="chat_with">"Chatter avec <xliff:g id="USER">%1$s</xliff:g>"</string>
     <string name="me">"Moi"</string>
+    <!-- no translation found for compose_hint (1735533889811320962) -->
+    <skip />
     <string name="contact_online">"<xliff:g id="USER">%1$s</xliff:g> est en ligne"</string>
     <string name="contact_away">"<xliff:g id="USER">%1$s</xliff:g> est absent"</string>
     <string name="contact_busy">"<xliff:g id="USER">%1$s</xliff:g> est occupé"</string>
     <string name="contact_offline">"<xliff:g id="USER">%1$s</xliff:g> est hors ligne"</string>
     <string name="contact_joined">"<xliff:g id="USER">%1$s</xliff:g> a rejoint la conversation"</string>
     <string name="contact_left">"<xliff:g id="USER">%1$s</xliff:g> a quitté la conversation"</string>
-    <string name="time_stamp">"\"Envoyé à\" hh:mm \"sur\" EEEE"</string>
+    <!-- no translation found for time_stamp (8952691401963972802) -->
+    <skip />
     <string name="send">"Envoyer"</string>
     <string name="msg_sent_failed">"Ce message n\'a pas pu être envoyé."</string>
     <string name="disconnected_warning">"Connexion au serveur interrompue. Les messages seront transmis lorsque vous serez de nouveau connecté."</string>
index d5fe3e6..6a1a7d6 100644 (file)
     <string name="save">"Salva"</string>
     <string name="chat_with">"Conversazione con <xliff:g id="USER">%1$s</xliff:g>"</string>
     <string name="me">"Io"</string>
+    <!-- no translation found for compose_hint (1735533889811320962) -->
+    <skip />
     <string name="contact_online">"<xliff:g id="USER">%1$s</xliff:g> è online"</string>
     <string name="contact_away">"<xliff:g id="USER">%1$s</xliff:g> non è al computer"</string>
     <string name="contact_busy">"<xliff:g id="USER">%1$s</xliff:g> è occupato"</string>
     <string name="contact_offline">"<xliff:g id="USER">%1$s</xliff:g> è offline"</string>
     <string name="contact_joined">"<xliff:g id="USER">%1$s</xliff:g> è entrato"</string>
     <string name="contact_left">"<xliff:g id="USER">%1$s</xliff:g> è uscito"</string>
-    <string name="time_stamp">"\'Inviato alle\' hh:mm a \'il\' EEEE"</string>
+    <!-- no translation found for time_stamp (8952691401963972802) -->
+    <skip />
     <string name="send">"Invia"</string>
     <string name="msg_sent_failed">"Impossibile inviare il messaggio."</string>
     <string name="disconnected_warning">"Connessione al server persa. I messaggi saranno inviati quando verrà ristabilita."</string>
index c718d5c..e804463 100644 (file)
     <string name="save">"保存"</string>
     <string name="chat_with">"<xliff:g id="USER">%1$s</xliff:g>とチャット"</string>
     <string name="me">"自分"</string>
+    <!-- no translation found for compose_hint (1735533889811320962) -->
+    <skip />
     <string name="contact_online">"<xliff:g id="USER">%1$s</xliff:g>さんはオンラインです"</string>
     <string name="contact_away">"<xliff:g id="USER">%1$s</xliff:g>さんは退席中です"</string>
     <string name="contact_busy">"<xliff:g id="USER">%1$s</xliff:g>さんは取り込み中です"</string>
     <string name="contact_offline">"<xliff:g id="USER">%1$s</xliff:g>さんはオフラインです"</string>
     <string name="contact_joined">"<xliff:g id="USER">%1$s</xliff:g>さんが参加しました"</string>
     <string name="contact_left">"<xliff:g id="USER">%1$s</xliff:g>さんが退出しました"</string>
-    <string name="time_stamp">"EEEE \'の\' a hh:mm \'に送信\'"</string>
+    <!-- no translation found for time_stamp (8952691401963972802) -->
+    <skip />
     <string name="send">"送信"</string>
     <string name="msg_sent_failed">"メッセージを送信できませんでした。"</string>
     <string name="disconnected_warning">"サーバーとの接続が失われました。オンラインになり次第メッセージを送信します。"</string>
index db73c56..7bb1db4 100644 (file)
     <string name="save">"저장"</string>
     <string name="chat_with">"<xliff:g id="USER">%1$s</xliff:g>님과 채팅"</string>
     <string name="me">"나"</string>
+    <!-- no translation found for compose_hint (1735533889811320962) -->
+    <skip />
     <string name="contact_online">"<xliff:g id="USER">%1$s</xliff:g>님이 온라인 상태입니다."</string>
     <string name="contact_away">"<xliff:g id="USER">%1$s</xliff:g>님이 자리에 없습니다."</string>
     <string name="contact_busy">"<xliff:g id="USER">%1$s</xliff:g>님이 다른 용무 중입니다."</string>
     <string name="contact_offline">"<xliff:g id="USER">%1$s</xliff:g>님이 오프라인 상태입니다."</string>
     <string name="contact_joined">"<xliff:g id="USER">%1$s</xliff:g>님이 참여하셨습니다."</string>
     <string name="contact_left">"<xliff:g id="USER">%1$s</xliff:g>님이 채팅룸을 나가셨습니다."</string>
-    <string name="time_stamp">"\'보낸 시간\' hh:mm \'위치\' EEEE"</string>
+    <!-- no translation found for time_stamp (8952691401963972802) -->
+    <skip />
     <string name="send">"보내기"</string>
     <string name="msg_sent_failed">"메시지를 보내지 못했습니다."</string>
     <string name="disconnected_warning">"서버와의 연결이 끊어졌습니다. 메시지는 온라인 상태일 때 전송됩니다."</string>
index c2eac04..c77a80c 100644 (file)
     <string name="menu_invite_contact">"Inviter…"</string>
     <string name="menu_switch_chats">"Bytt mellom samtaler"</string>
     <string name="menu_insert_smiley">"Sett inn smilefjes"</string>
-    <!-- no translation found for menu_plus (5000617247235760106) -->
-    <skip />
+    <string name="menu_plus">"Meny+"</string>
     <string name="default_input_title">"Inndata"</string>
     <string name="confirm">"Bekreft"</string>
-    <string name="confirm_delete_contact">"Kontakten \\\"<xliff:g id="USER">%1$s</xliff:g>\\\" vil bli slettet."</string>
-    <string name="confirm_block_contact">"Kontakten \\\"<xliff:g id="USER">%1$s</xliff:g>\\\" vil bli blokkert."</string>
-    <string name="confirm_unblock_contact">"Kontakten \\\"<xliff:g id="USER">%1$s</xliff:g>\\\" vil bli avblokkert."</string>
+    <string name="confirm_delete_contact">"Kontakten \\\\\\\"<xliff:g id="USER">%1$s</xliff:g>\\\\\\\" vil bli slettet."</string>
+    <string name="confirm_block_contact">"Kontakten \\\\\\\"<xliff:g id="USER">%1$s</xliff:g>\\\\\\\" vil bli blokkert."</string>
+    <string name="confirm_unblock_contact">"Kontakten \\\\\\\"<xliff:g id="USER">%1$s</xliff:g>\\\\\\\" vil bli avblokkert."</string>
     <string name="ok">"OK"</string>
     <string name="cancel">"Avbryt"</string>
     <string name="yes">"OK"</string>
@@ -50,7 +49,7 @@
     <string name="remember_password">"Husk passord."</string>
     <string name="keep_me_signed_in">"Logg inn automatisk."</string>
     <string name="sign_up">"Mangler du konto?"</string>
-    <string name="check_auto_sign_in">"Dette valget logger deg automatisk inn hver gang du åpner applikasjonen. For å avmerke valget, logg ut og fjern så haken ved \\\"Logg inn automatis\\\"."</string>
+    <string name="check_auto_sign_in">"Dette valget logger deg automatisk inn hver gang du åpner applikasjonen. For å avmerke valget, logg ut og fjern så haken ved \\\\\\\"Logg inn automatis\\\\\\\"."</string>
     <string name="sign_in">"Logg inn"</string>
     <string name="signing_in_to">"Logger inn på <xliff:g id="ACCOUNT">%1$s</xliff:g>"</string>
     <string name="signing_in_wait">"Logger inn…"</string>
@@ -90,6 +89,8 @@
     <string name="save">"Save"</string>
     <string name="chat_with">"Samtale med <xliff:g id="USER">%1$s</xliff:g>"</string>
     <string name="me">"Meg"</string>
+    <!-- no translation found for compose_hint (1735533889811320962) -->
+    <skip />
     <string name="contact_online">"<xliff:g id="USER">%1$s</xliff:g> er tilgjengelig"</string>
     <string name="contact_away">"<xliff:g id="USER">%1$s</xliff:g> er borte"</string>
     <string name="contact_busy">"<xliff:g id="USER">%1$s</xliff:g> er opptatt"</string>
     <string name="empty_chat_list">"Ingen aktive samtaler."</string>
     <string name="add_contact_title">"Legg til kontakt"</string>
     <string name="input_contact_label">"E-postadresse til den du ønsker å invitere:"</string>
-    <!-- no translation found for choose_list_label (1430489448508574145) -->
-    <skip />
+    <string name="choose_list_label">"Velg en liste:"</string>
     <string name="invite_instruction">"Skriv inn et navn som skal legges til fra kontaktene."</string>
     <string name="invite_label">"Send invitasjon"</string>
     <string name="setting_title">"Generelle innstillinger"</string>
     <string name="subscription_notify_text">"Ny venneinvitasjon fra <xliff:g id="USER">%s</xliff:g>"</string>
     <string name="notify_groupchat_label">"Invitasjon til gruppesamtale"</string>
     <string name="group_chat_invite_notify_text">"Ny invitasjon til gruppesamtale fra <xliff:g id="USER">%s</xliff:g>"</string>
-    <string name="add_contact_success">"Kontakten \\\"<xliff:g id="USER">%1$s</xliff:g>\\\" ble lagt til."</string>
-    <string name="delete_contact_success">"Kontakten \\\"<xliff:g id="USER">%1$s</xliff:g>\\\" ble slettet."</string>
-    <string name="block_contact_success">"Kontakten \\\"<xliff:g id="USER">%1$s</xliff:g>\\\" ble blokkert."</string>
-    <string name="unblock_contact_success">"Kontakten \\\"<xliff:g id="USER">%1$s</xliff:g>\\\" ble avblokkert."</string>
+    <string name="add_contact_success">"Kontakten \\\\\\\"<xliff:g id="USER">%1$s</xliff:g>\\\\\\\" ble lagt til."</string>
+    <string name="delete_contact_success">"Kontakten \\\\\\\"<xliff:g id="USER">%1$s</xliff:g>\\\\\\\" ble slettet."</string>
+    <string name="block_contact_success">"Kontakten \\\\\\\"<xliff:g id="USER">%1$s</xliff:g>\\\\\\\" ble blokkert."</string>
+    <string name="unblock_contact_success">"Kontakten \\\\\\\"<xliff:g id="USER">%1$s</xliff:g>\\\\\\\" ble avblokkert."</string>
     <string name="perm_label">"start lynmeldingstjeneste"</string>
     <string name="perm_desc">"Tillater applikasjoner å starte lynmeldingstjenesten."</string>
     <string name="error">"NB"</string>
     <string name="load_contact_list_failed">"Kontaktlisten ble ikke lastet."</string>
     <string name="cant_connect_to_server">"Kan ikke koble til tjeneren. Sjekk tilkoblingen."</string>
     <string name="contact_already_exist">"<xliff:g id="USER">%1$s</xliff:g> finnes allerede i kontaktlisten."</string>
-    <string name="contact_blocked">"Kontakten \\\"<xliff:g id="USER">%1$s</xliff:g>\\\" er nå blokkert."</string>
+    <string name="contact_blocked">"Kontakten \\\\\\\"<xliff:g id="USER">%1$s</xliff:g>\\\\\\\" er nå blokkert."</string>
     <string name="contact_not_loaded">"Vent mens kontaktlisten lastes."</string>
     <string name="network_error">"Det oppsto en nettfeil."</string>
     <string name="service_not_support">"Tjeneren støtter ikke denne funksjonen."</string>
     <item>":-!"</item>
     <item>":-["</item>
     <item>"O:-)"</item>
-    <item>":-\\\\"</item>
-    <item>":\\\'("</item>
+    <item>":-\\\\\\\\"</item>
+    <item>":\\\\\\\'("</item>
     <item>":-X"</item>
     <item>":-D"</item>
     <item>"o_O"</item>
index 9c76538..fa87abf 100644 (file)
     <string name="save">"Opslaan"</string>
     <string name="chat_with">"Chatten met <xliff:g id="USER">%1$s</xliff:g>"</string>
     <string name="me">"Ik"</string>
+    <!-- no translation found for compose_hint (1735533889811320962) -->
+    <skip />
     <string name="contact_online">"<xliff:g id="USER">%1$s</xliff:g> is online"</string>
     <string name="contact_away">"<xliff:g id="USER">%1$s</xliff:g> is afwezig"</string>
     <string name="contact_busy">"<xliff:g id="USER">%1$s</xliff:g> is bezet"</string>
     <string name="contact_offline">"<xliff:g id="USER">%1$s</xliff:g> is offline"</string>
     <string name="contact_joined">"<xliff:g id="USER">%1$s</xliff:g> is online gekomen"</string>
     <string name="contact_left">"<xliff:g id="USER">%1$s</xliff:g> is weggegaan"</string>
-    <string name="time_stamp">"\'Verzonden om\' uu:mm a \'op\' EEEE"</string>
+    <!-- no translation found for time_stamp (8952691401963972802) -->
+    <skip />
     <string name="send">"Verzenden"</string>
     <string name="msg_sent_failed">"Dit bericht kan niet worden verzonden."</string>
     <string name="disconnected_warning">"Verbinding met de server is verbroken. Berichten worden verzonden wanneer u online bent."</string>
index 0778e1e..54375b2 100644 (file)
     <string name="save">"Zapisz"</string>
     <string name="chat_with">"Czatuj z użytkownikiem <xliff:g id="USER">%1$s</xliff:g>"</string>
     <string name="me">"Ja"</string>
+    <!-- no translation found for compose_hint (1735533889811320962) -->
+    <skip />
     <string name="contact_online">"Użytkownik <xliff:g id="USER">%1$s</xliff:g> jest dostępny"</string>
     <string name="contact_away">"Użytkownik <xliff:g id="USER">%1$s</xliff:g> jest niedostępny"</string>
     <string name="contact_busy">"Użytkownik <xliff:g id="USER">%1$s</xliff:g> jest zajęty"</string>
     <string name="contact_offline">"Użytkownik <xliff:g id="USER">%1$s</xliff:g> jest niedostępny"</string>
     <string name="contact_joined">"Użytkownik <xliff:g id="USER">%1$s</xliff:g> dołączył do czatu"</string>
     <string name="contact_left">"Użytkownik <xliff:g id="USER">%1$s</xliff:g> opuścił czat"</string>
-    <string name="time_stamp">"„Wysłano o” gg:mm „w” EEEE"</string>
+    <!-- no translation found for time_stamp (8952691401963972802) -->
+    <skip />
     <string name="send">"Wyślij"</string>
     <string name="msg_sent_failed">"Nie można wysłać wiadomości."</string>
     <string name="disconnected_warning">"Utracono połączenie z serwerem. Wiadomości zostaną wysłane po przejściu w tryb online."</string>
index da7a6c6..d62bc3a 100644 (file)
     <string name="save">"Сохранить"</string>
     <string name="chat_with">"Чат: <xliff:g id="USER">%1$s</xliff:g>"</string>
     <string name="me">"Я"</string>
+    <!-- no translation found for compose_hint (1735533889811320962) -->
+    <skip />
     <string name="contact_online">"<xliff:g id="USER">%1$s</xliff:g> в сети"</string>
     <string name="contact_away">"<xliff:g id="USER">%1$s</xliff:g> отсутствует"</string>
     <string name="contact_busy">"Пользователь <xliff:g id="USER">%1$s</xliff:g> занят"</string>
     <string name="contact_offline">"<xliff:g id="USER">%1$s</xliff:g> не в сети"</string>
     <string name="contact_joined">"<xliff:g id="USER">%1$s</xliff:g> в чате"</string>
     <string name="contact_left">"<xliff:g id="USER">%1$s</xliff:g> не в чате"</string>
-    <string name="time_stamp">"\"Отправлено в\" чч:мм EEEE"</string>
+    <!-- no translation found for time_stamp (8952691401963972802) -->
+    <skip />
     <string name="send">"Отправить"</string>
     <string name="msg_sent_failed">"Не удалось отправить сообщение."</string>
     <string name="disconnected_warning">"Подключение к серверу прервано. Сообщения будут отправлены при подключении к Интернету."</string>
index 7879b78..3ff2736 100644 (file)
     <string name="save">"保存"</string>
     <string name="chat_with">"与<xliff:g id="USER">%1$s</xliff:g>聊天"</string>
     <string name="me">"我"</string>
+    <!-- no translation found for compose_hint (1735533889811320962) -->
+    <skip />
     <string name="contact_online">"<xliff:g id="USER">%1$s</xliff:g>在线"</string>
     <string name="contact_away">"<xliff:g id="USER">%1$s</xliff:g>离开"</string>
     <string name="contact_busy">"<xliff:g id="USER">%1$s</xliff:g>正忙"</string>
     <string name="contact_offline">"<xliff:g id="USER">%1$s</xliff:g>脱机"</string>
     <string name="contact_joined">"<xliff:g id="USER">%1$s</xliff:g>已加入"</string>
     <string name="contact_left">"<xliff:g id="USER">%1$s</xliff:g>已离开"</string>
-    <string name="time_stamp">"“发送时间”hh:mm“位于时区”EEEE"</string>
+    <!-- no translation found for time_stamp (8952691401963972802) -->
+    <skip />
     <string name="send">"发送"</string>
     <string name="msg_sent_failed">"该消息无法发送。"</string>
     <string name="disconnected_warning">"与服务器断开连接。消息将在您上线时发送。"</string>
index 7da3811..b06f664 100644 (file)
     <string name="save">"儲存"</string>
     <string name="chat_with">"與 <xliff:g id="USER">%1$s</xliff:g> 交談"</string>
     <string name="me">"我"</string>
+    <!-- no translation found for compose_hint (1735533889811320962) -->
+    <skip />
     <string name="contact_online">"<xliff:g id="USER">%1$s</xliff:g> 在線上"</string>
     <string name="contact_away">"<xliff:g id="USER">%1$s</xliff:g> 顯示離開"</string>
     <string name="contact_busy">"<xliff:g id="USER">%1$s</xliff:g> 目前忙碌"</string>
     <string name="contact_offline">"<xliff:g id="USER">%1$s</xliff:g> 顯示離線"</string>
     <string name="contact_joined">"<xliff:g id="USER">%1$s</xliff:g> 加入交談"</string>
     <string name="contact_left">"<xliff:g id="USER">%1$s</xliff:g> 已離開"</string>
-    <string name="time_stamp">"hh:mm [傳送] 一個 [on] EEEE"</string>
+    <!-- no translation found for time_stamp (8952691401963972802) -->
+    <skip />
     <string name="send">"傳送"</string>
     <string name="msg_sent_failed">"訊息無法傳送。"</string>
     <string name="disconnected_warning">"與伺服器連線中斷。您的訊息將在下次登入時傳送。"</string>
index 49776f1..edf37cc 100644 (file)
     <string name="signing_in_to">Signing in to <xliff:g id="account">%1$s</xliff:g></string>
     <!-- This is the progress/status text displayed in the middle of the sign-in progress screen. -->
     <string name="signing_in_wait">Signing in\u2026</string>
+    <!-- Dialog title -->
+    <!-- This is the title for the background data prompt dialog, asking the user whether
+    to enable the background data if it is disabled when launch the IM app -->
+    <string name="bg_data_prompt_title">Background data disabled</string>
+    <!-- Dialog messages: -->
+    <!-- This is the message displayed in the prompt dialog when we launch IM but found
+    the background data is disabled -->
+    <string name="bg_data_prompt_message">
+         <xliff:g id="provider">%1$s</xliff:g> needs background data to be enabled.
+    </string>
+    <!-- Dialog buttons: -->
+    <!-- OK button for the prompt dialog -->
+    <string name="bg_data_prompt_ok">Enable</string>
+    <!-- Cancel button for the prompt dialog -->
+    <string name="bg_data_prompt_cancel">Quit</string>
 
     <!-- These strings are displayed on the contact list page. -->
     <!-- The title of the ongoing chat group. May be overrided by the plugin.-->
index 4c72ad2..6a92d62 100644 (file)
     <string name="menu_add_contact">"Legg til kontakt"</string>
     <string name="menu_remove_contact">"Fjern kontakt"</string>
     <string name="menu_block_contact">"Blokker kontakt"</string>
-    <!-- no translation found for menu_contact_list (7408048984312793527) -->
-    <skip />
+    <string name="menu_contact_list">"Kontaktliste"</string>
     <string name="menu_start_chat">"Start samtale"</string>
     <string name="menu_view_profile">"Vis profil"</string>
     <string name="menu_end_conversation">"Avslutt samtale"</string>
     <string name="menu_switch_chats">"Bytt mellom samtaler"</string>
     <string name="menu_insert_smiley">"Sett inn smilefjes"</string>
     <string name="sign_up">"Mangler du konto?"</string>
-    <!-- no translation found for check_save_password (3554564072443242779) -->
-    <skip />
-    <!-- no translation found for buddy_list_title (5837732412636822107) -->
-    <skip />
+    <string name="check_save_password">"Av sikkerhetsgrunner, gå til nettstedet og endre passordet om telefonen blir tapt eller stjåler."</string>
+    <string name="buddy_list_title">"Kontaktliste - <xliff:g id="USERNAME">%1$s</xliff:g>"</string>
     <string name="label_username">"Brukernavn:"</string>
     <string name="ongoing_conversation">"Pågående samtaler (<xliff:g id="NUMBER">%1$d</xliff:g>)"</string>
     <string name="contact_profile_title">"Kontaktprofil"</string>
     <string name="add_contact_title">"Legg til kontakt"</string>
     <string name="input_contact_label">"E-postadresse til den du ønsker å invitere:"</string>
     <string name="invite_label">"Send invitasjon"</string>
-    <!-- no translation found for smiley_names:0 (811476776139578986) -->
-    <!-- no translation found for smiley_names:1 (2764363456492352853) -->
-    <!-- no translation found for smiley_names:2 (416624764294712159) -->
-    <!-- no translation found for smiley_names:3 (7152979870122929989) -->
-    <!-- no translation found for smiley_names:4 (5784780866600056743) -->
-    <!-- no translation found for smiley_names:5 (5454185003381226454) -->
-    <!-- no translation found for smiley_names:6 (1413668617851210441) -->
-    <!-- no translation found for smiley_names:7 (232246158381043538) -->
-    <!-- no translation found for smiley_names:8 (2440257511131202785) -->
-    <!-- no translation found for smiley_names:9 (4571282940807190133) -->
-    <!-- no translation found for smiley_names:10 (3260099163589753993) -->
-    <!-- no translation found for smiley_names:11 (3042531792218744865) -->
-    <!-- no translation found for smiley_names:12 (5227319381647888452) -->
-    <!-- no translation found for smiley_names:13 (6952104030566994554) -->
-    <!-- no translation found for smiley_names:14 (9199616532683270084) -->
-    <!-- no translation found for smiley_names:15 (4338502150254517147) -->
-    <!-- no translation found for smiley_names:16 (1014703928300075245) -->
-    <!-- no translation found for smiley_texts:0 (6682271134385564589) -->
-    <!-- no translation found for smiley_texts:1 (5242689844155076377) -->
-    <!-- no translation found for smiley_texts:2 (521632995149320343) -->
-    <!-- no translation found for smiley_texts:3 (3442897533435789796) -->
-    <!-- no translation found for smiley_texts:4 (682698687423187022) -->
-    <!-- no translation found for smiley_texts:5 (1531701168660725626) -->
-    <!-- no translation found for smiley_texts:6 (7958357467119008619) -->
-    <!-- no translation found for smiley_texts:7 (4638775565490840154) -->
-    <!-- no translation found for smiley_texts:8 (6225545209385623235) -->
-    <!-- no translation found for smiley_texts:9 (5725425598368680891) -->
-    <!-- no translation found for smiley_texts:10 (5365880622794795497) -->
-    <!-- no translation found for smiley_texts:11 (8260692119195572132) -->
-    <!-- no translation found for smiley_texts:12 (6879285154649424413) -->
-    <!-- no translation found for smiley_texts:13 (554517875650930417) -->
-    <!-- no translation found for smiley_texts:14 (8169228040168187510) -->
-    <!-- no translation found for smiley_texts:15 (5444890977206638254) -->
-    <!-- no translation found for smiley_texts:16 (8814856019116253585) -->
+  <string-array name="smiley_names">
+    <item>"Glad"</item>
+    <item>"Trist"</item>
+    <item>"Blunker"</item>
+    <item>"Rekker tunge"</item>
+    <item>"Overrasket"</item>
+    <item>"Kyss"</item>
+    <item>"Roper"</item>
+    <item>"Kul"</item>
+    <item>"Pengemunn"</item>
+    <item>"Fot i munnen"</item>
+    <item>"Flau"</item>
+    <item>"Engel"</item>
+    <item>"Usikker"</item>
+    <item>"Gråter"</item>
+    <item>"Stille som graven"</item>
+    <item>"Ler"</item>
+    <item>"Forvirret"</item>
+  </string-array>
+  <string-array name="smiley_texts">
+    <item>":-)"</item>
+    <item>":-("</item>
+    <item>";-)"</item>
+    <item>":-P"</item>
+    <item>"=-O"</item>
+    <item>":-*"</item>
+    <item>":O"</item>
+    <item>"B-)"</item>
+    <item>":-$"</item>
+    <item>":-!"</item>
+    <item>":-["</item>
+    <item>"O:-)"</item>
+    <item>":-\\\\"</item>
+    <item>":\\\'("</item>
+    <item>":-X"</item>
+    <item>":-D"</item>
+    <item>"o_O"</item>
+  </string-array>
 </resources>
index 9f0aa83..4ef7041 100644 (file)
@@ -114,6 +114,26 @@ public class FrontDoorPlugin extends Service {
         try {
             if (c.moveToFirst()) {
                 providerId = c.getLong(c.getColumnIndexOrThrow(Im.Provider._ID));
+                String origFullName = c.getString(
+                        c.getColumnIndexOrThrow(Im.Provider.FULLNAME));
+                String origCategory = c.getString(
+                        c.getColumnIndexOrThrow(Im.Provider.CATEGORY));
+                String origSignupUrl = c.getString(
+                        c.getColumnIndexOrThrow(Im.Provider.SIGNUP_URL));
+                ContentValues values = new ContentValues();
+                if (origFullName == null || !origFullName.equals(providerFullName)) {
+                    values.put(Im.Provider.FULLNAME, providerFullName);
+                }
+                if (origCategory == null) {
+                    values.put(Im.Provider.CATEGORY, ImApp.IMPS_CATEGORY);
+                }
+                if (origSignupUrl == null || !origSignupUrl.equals(signUpUrl)) {
+                    values.put(Im.Provider.SIGNUP_URL, signUpUrl);
+                }
+                if (values.size() > 0) {
+                    Uri uri = ContentUris.withAppendedId(Im.Provider.CONTENT_URI, providerId);
+                    cr.update(uri, values, null, null);
+                }
             } else {
                 ContentValues values = new ContentValues(3);
                 values.put(Im.Provider.NAME, providerName);
@@ -148,7 +168,7 @@ public class FrontDoorPlugin extends Service {
 
     private Map<Integer, Integer> loadBrandingResource(String className, String srcPath) {
         Map retVal = null;
-        
+
         if (LOCAL_DEBUG) log("loadBrandingResource: className=" + className +
                 ", srcPath=" + srcPath);
 
@@ -194,7 +214,7 @@ public class FrontDoorPlugin extends Service {
         */
         return getClassLoader();
     }
-    
+
     private void log(String msg) {
         Log.d(TAG, "[ImFrontDoor] " + msg);
     }
index a2768dd..38e7ead 100644 (file)
@@ -31,6 +31,7 @@ import android.content.pm.ResolveInfo;
 import android.content.pm.ServiceInfo;
 import android.content.res.Resources;
 import android.database.Cursor;
+import android.net.ConnectivityManager;
 import android.net.Uri;
 import android.os.Broadcaster;
 import android.os.Bundle;
@@ -256,6 +257,12 @@ public class ImApp extends Application {
         return mImService != null;
     }
 
+    public boolean isBackgroundDataEnabled() {
+        ConnectivityManager manager =
+                (ConnectivityManager) mApplicationContext.getSystemService(CONNECTIVITY_SERVICE);
+        return manager.getBackgroundDataSetting();
+    }
+
     public static long insertOrUpdateAccount(ContentResolver cr,
             long providerId, String userName, String pw) {
         String selection = Im.Account.PROVIDER + "=? AND " + Im.Account.USERNAME + "=?";
index 0a87a3d..bcd7825 100644 (file)
@@ -48,11 +48,20 @@ import android.view.Window;
 import android.widget.ImageView;
 
 public class SigningInActivity extends Activity {
+    private static final String SYNC_SETTINGS_ACTION = "android.settings.SYNC_SETTINGS";
+    private static final String SYNC_SETTINGS_CATEGORY = "android.intent.category.DEFAULT";
+
     private IImConnection mConn;
     private IConnectionListener mListener;
     private SimpleAlertHandler mHandler;
     private ImApp mApp;
     private long mProviderId;
+    private long mAccountId;
+    private String mProviderName;
+
+    private String mUserName;
+    private String mPassword;
+
     private String mToAddress;
 
     protected static final int ID_CANCEL_SIGNIN = Menu.FIRST + 1;
@@ -94,16 +103,17 @@ public class SigningInActivity extends Activity {
         }
 
         mProviderId = c.getLong(c.getColumnIndexOrThrow(Im.Account.PROVIDER));
-        final long accountId = c.getLong(c.getColumnIndexOrThrow(Im.Account._ID));
-        final String username = c.getString(c.getColumnIndexOrThrow(Im.Account.USERNAME));
+        mAccountId = c.getLong(c.getColumnIndexOrThrow(Im.Account._ID));
+        mUserName = c.getString(c.getColumnIndexOrThrow(Im.Account.USERNAME));
         String pwExtra = intent.getStringExtra(ImApp.EXTRA_INTENT_PASSWORD);
-        final String pw = pwExtra != null ? pwExtra
+        mPassword = pwExtra != null ? pwExtra
                 : c.getString(c.getColumnIndexOrThrow(Im.Account.PASSWORD));
         final boolean isActive = c.getInt(c.getColumnIndexOrThrow(Im.Account.ACTIVE)) == 1;
 
         c.close();
         mApp = ImApp.getApplication(this);
         final ProviderDef provider = mApp.getProvider(mProviderId);
+        mProviderName = provider.mName;
 
         BrandingResources brandingRes = mApp.getBrandingResource(mProviderId);
         getWindow().setFeatureDrawable(Window.FEATURE_LEFT_ICON,
@@ -117,15 +127,15 @@ public class SigningInActivity extends Activity {
                 BrandingResourceIDs.DRAWABLE_SPLASH_SCREEN));
 
         mHandler = new SimpleAlertHandler(this);
-        mListener = new MyConnectionListener(mHandler, provider.mName);
+        mListener = new MyConnectionListener(mHandler);
 
         mApp.callWhenServiceConnected(mHandler, new Runnable() {
             public void run() {
                 if (mApp.serviceConnected()) {
                     if (!isActive) {
-                        activateAccount(mProviderId, accountId);
+                        activateAccount(mProviderId, mAccountId);
                     }
-                    signInAccount(provider, accountId, username, pw);
+                    signInAccount();
                 }
             }
         });
@@ -134,10 +144,24 @@ public class SigningInActivity extends Activity {
         setResult(RESULT_OK);
     }
 
-    void signInAccount(ProviderDef provider, long accountId,
-            String username, String pw) {
+    @Override
+    protected void onRestart() {
+        super.onRestart();
+
+        if (mApp.serviceConnected() && mApp.isBackgroundDataEnabled()) {
+            signInAccount();
+        } else {
+            if(Log.isLoggable(ImApp.LOG_TAG, Log.DEBUG)) {
+                log("onRestart: service disconnected or background data disabled...");
+            }
+            setResult(RESULT_CANCELED);
+            finish();
+        }
+    }
+
+    void signInAccount() {
         try {
-            IImConnection conn = mApp.getConnection(provider.mId);
+            IImConnection conn = mApp.getConnection(mProviderId);
             if (conn != null) {
                 mConn = conn;
                 // register listener before get state so that we won't miss
@@ -147,12 +171,17 @@ public class SigningInActivity extends Activity {
                 if (state != ImConnection.LOGGING_IN) {
                     // already signed in or failed
                     conn.unregisterConnectionListener(mListener);
-                    handleConnectionEvent(provider.mName, state, null);
+                    handleConnectionEvent(state, null);
                 }
             } else {
-                mConn = mApp.createConnection(provider.mId);
-                mConn.registerConnectionListener(mListener);
-                mConn.login(accountId, username, pw, true);
+                if (mApp.isBackgroundDataEnabled()) {
+                    mConn = mApp.createConnection(mProviderId);
+                    mConn.registerConnectionListener(mListener);
+                    mConn.login(mAccountId, mUserName, mPassword, true);
+                } else {
+                    promptForBackgroundDataSetting();
+                    return;
+                }
             }
 
         } catch (RemoteException e) {
@@ -178,7 +207,9 @@ public class SigningInActivity extends Activity {
     }
 
     @Override
-    protected void onDestroy() {
+    protected void onStop() {
+        super.onStop();
+
         if (mApp != null) {
             mApp.removePendingCall(mHandler);
         }
@@ -192,7 +223,12 @@ public class SigningInActivity extends Activity {
                 Log.w(ImApp.LOG_TAG, "<SigningInActivity> Connection disappeared!");
             }
         }
-        super.onDestroy();
+        // When background data is enabled, we don't want this activity in the backlist
+        // so we always call finish() when we leave signing in screen. Otherwise, we
+        // don't finish since we need to keep signing in if user choose to enable background.
+        if (mApp.isBackgroundDataEnabled()) {
+            finish();
+        }
     }
 
     @Override
@@ -225,7 +261,35 @@ public class SigningInActivity extends Activity {
         }
     }
 
-    void handleConnectionEvent(String serviceName, int state, ImErrorInfo error) {
+    /**
+     * Popup a dialog to ask the user whether he/she wants to enable
+     * background connection to continue. If yes, enable the setting
+     * and broadcast the change. Otherwise, quit the signing in window
+     * immediately.
+     */
+    private void promptForBackgroundDataSetting() {
+        new AlertDialog.Builder(SigningInActivity.this)
+            .setTitle(R.string.bg_data_prompt_title)
+            .setIcon(android.R.drawable.ic_dialog_alert)
+            .setMessage(getString(R.string.bg_data_prompt_message, mProviderName))
+            .setPositiveButton(R.string.bg_data_prompt_ok, new DialogInterface.OnClickListener() {
+                public void onClick(DialogInterface dialog, int whichButton) {
+                    Intent intent = new Intent(SYNC_SETTINGS_ACTION);
+                    intent.addCategory(SYNC_SETTINGS_CATEGORY);
+                    startActivity(intent);
+                }
+             })
+            .setNegativeButton(R.string.bg_data_prompt_cancel,
+                new DialogInterface.OnClickListener() {
+                    public void onClick(DialogInterface dialog, int whichButton) {
+                        setResult(RESULT_CANCELED);
+                        finish();
+                    }
+             })
+            .show();
+    }
+
+    void handleConnectionEvent(int state, ImErrorInfo error) {
         if (isFinishing()) {
             return;
         }
@@ -243,7 +307,7 @@ public class SigningInActivity extends Activity {
                     if(session == null) {
                         session = manager.createChatSession(mToAddress);
                     }
-                    Uri data = ContentUris.withAppendedId(Im.Chats.CONTENT_URI, session.getId());                   
+                    Uri data = ContentUris.withAppendedId(Im.Chats.CONTENT_URI, session.getId());
                     intent = new Intent(Intent.ACTION_VIEW, data);
                     intent.putExtra("from", mToAddress);
                     intent.putExtra("providerId", mProviderId);
@@ -264,7 +328,7 @@ public class SigningInActivity extends Activity {
             Resources r = getResources();
             new AlertDialog.Builder(this)
                 .setTitle(R.string.error)
-                .setMessage(r.getString(R.string.login_service_failed, serviceName,
+                .setMessage(r.getString(R.string.login_service_failed, mProviderName,
                             error == null? "": ErrorResUtils.getErrorRes(r, error.getCode())))
                 .setPositiveButton(R.string.ok,
                         new DialogInterface.OnClickListener() {
@@ -283,17 +347,14 @@ public class SigningInActivity extends Activity {
     }
 
     private final class MyConnectionListener extends ConnectionListenerAdapter {
-        private final String mServiceName;
-
-        MyConnectionListener(Handler handler, String serviceName) {
+        MyConnectionListener(Handler handler) {
             super(handler);
-            mServiceName = serviceName;
         }
 
         @Override
         public void onConnectionStateChange(IImConnection connection,
                 int state, ImErrorInfo error) {
-            handleConnectionEvent(mServiceName, state, error);
+            handleConnectionEvent(state, error);
         }
     }
 }
index 41bc9e8..1f197a5 100644 (file)
@@ -26,10 +26,13 @@ import java.util.Map;
 import java.util.Vector;
 
 import android.app.Service;
+import android.content.BroadcastReceiver;
 import android.content.ContentResolver;
 import android.content.ContentUris;
 import android.content.ContentValues;
+import android.content.Context;
 import android.content.Intent;
+import android.content.IntentFilter;
 import android.content.pm.PackageManager;
 import android.content.pm.ResolveInfo;
 import android.content.pm.ServiceInfo;
@@ -90,6 +93,10 @@ public class RemoteImService extends Service {
     private int mNetworkType;
     private boolean mNeedCheckAutoLogin;
 
+    private boolean mBackgroundDataEnabled;
+
+    private SettingsMonitor mSettingsMonitor;
+
     Vector<ImConnectionAdapter> mConnections;
     final RemoteCallbackList<IConnectionCreationListener> mRemoteListeners
             = new RemoteCallbackList<IConnectionCreationListener>();
@@ -110,6 +117,16 @@ public class RemoteImService extends Service {
         mNetworkConnectivityListener.registerHandler(mServiceHandler, EVENT_NETWORK_STATE_CHANGED);
         mNetworkConnectivityListener.startListening(this);
 
+        mSettingsMonitor = new SettingsMonitor();
+
+        IntentFilter intentFilter = new IntentFilter();
+        intentFilter.addAction(ConnectivityManager.ACTION_BACKGROUND_DATA_SETTING_CHANGED);
+        registerReceiver(mSettingsMonitor, intentFilter);
+
+        ConnectivityManager manager
+            = (ConnectivityManager) getSystemService(CONNECTIVITY_SERVICE);
+        setBackgroundData(manager.getBackgroundDataSetting());
+
         findAvaiablePlugins();
         AndroidSystemService.getInstance().initialize(this);
     }
@@ -352,6 +369,8 @@ public class RemoteImService extends Service {
         mNetworkConnectivityListener.unregisterHandler(mServiceHandler);
         mNetworkConnectivityListener.stopListening();
         mNetworkConnectivityListener = null;
+
+        unregisterReceiver(mSettingsMonitor);
     }
 
     @Override
@@ -422,6 +441,22 @@ public class RemoteImService extends Service {
         return mNetworkConnectivityListener.getState() == State.CONNECTED;
     }
 
+    private boolean isBackgroundDataEnabled() {
+        return mBackgroundDataEnabled;
+    }
+
+    private void setBackgroundData(boolean flag) {
+        mBackgroundDataEnabled = flag;
+    }
+
+    void handleBackgroundDataSettingChange(){
+        if (!isBackgroundDataEnabled()) {
+            for (ImConnectionAdapter conn : mConnections) {
+                conn.logout();
+            }
+        }
+    }
+
     void networkStateChanged() {
         if (mNetworkConnectivityListener == null) {
             return;
@@ -521,6 +556,20 @@ public class RemoteImService extends Service {
 
     };
 
+    private final class SettingsMonitor extends BroadcastReceiver {
+        @Override
+        public void onReceive(Context context, Intent intent) {
+            String action = intent.getAction();
+
+            if (ConnectivityManager.ACTION_BACKGROUND_DATA_SETTING_CHANGED.equals(action)) {
+                ConnectivityManager manager =
+                    (ConnectivityManager) getSystemService(CONNECTIVITY_SERVICE);
+                setBackgroundData(manager.getBackgroundDataSetting());
+                handleBackgroundDataSettingChange();
+            }
+        }
+    }
+
     private final class ServiceHandler extends Handler {
         public ServiceHandler() {
         }