mirror of
https://github.com/KDE/kdeconnect-android
synced 2025-08-23 02:17:20 +00:00
Added sms notifications
Added contact name lookup for sms and call notifications
This commit is contained in:
parent
b9c013630b
commit
603cc62ef0
@ -6,6 +6,7 @@
|
|||||||
<option name="SELECTED_BUILD_VARIANT" value="Debug" />
|
<option name="SELECTED_BUILD_VARIANT" value="Debug" />
|
||||||
<option name="ASSEMBLE_TASK_NAME" value="assembleDebug" />
|
<option name="ASSEMBLE_TASK_NAME" value="assembleDebug" />
|
||||||
<option name="ASSEMBLE_TEST_TASK_NAME" value="assembleTest" />
|
<option name="ASSEMBLE_TEST_TASK_NAME" value="assembleTest" />
|
||||||
|
<option name="SOURCE_GEN_TASK_NAME" value="TODO" />
|
||||||
<option name="ALLOW_USER_CONFIGURATION" value="false" />
|
<option name="ALLOW_USER_CONFIGURATION" value="false" />
|
||||||
<option name="MANIFEST_FILE_RELATIVE_PATH" value="/src/main/AndroidManifest.xml" />
|
<option name="MANIFEST_FILE_RELATIVE_PATH" value="/src/main/AndroidManifest.xml" />
|
||||||
<option name="RES_FOLDER_RELATIVE_PATH" value="/src/main/res" />
|
<option name="RES_FOLDER_RELATIVE_PATH" value="/src/main/res" />
|
||||||
@ -67,9 +68,9 @@
|
|||||||
</content>
|
</content>
|
||||||
<orderEntry type="jdk" jdkName="Android 4.2.2" jdkType="Android SDK" />
|
<orderEntry type="jdk" jdkName="Android 4.2.2" jdkType="Android SDK" />
|
||||||
<orderEntry type="sourceFolder" forTests="false" />
|
<orderEntry type="sourceFolder" forTests="false" />
|
||||||
<orderEntry type="library" name="android-support-v4" level="project" />
|
<orderEntry type="library" exported="" name="android-support-v4" level="project" />
|
||||||
<orderEntry type="library" name="mina-core-2.0.7" level="project" />
|
<orderEntry type="library" exported="" name="mina-core-2.0.7" level="project" />
|
||||||
<orderEntry type="library" name="slf4j-api-1.6.6" level="project" />
|
<orderEntry type="library" exported="" name="slf4j-api-1.6.6" level="project" />
|
||||||
</component>
|
</component>
|
||||||
</module>
|
</module>
|
||||||
|
|
||||||
|
@ -54,9 +54,11 @@
|
|||||||
<intent-filter>
|
<intent-filter>
|
||||||
<action android:name="android.net.wifi.WIFI_STATE_CHANGED" />
|
<action android:name="android.net.wifi.WIFI_STATE_CHANGED" />
|
||||||
</intent-filter>
|
</intent-filter>
|
||||||
|
<intent-filter>
|
||||||
|
<action android:name="android.provider.Telephony.SMS_RECEIVED" />
|
||||||
|
</intent-filter>
|
||||||
</receiver>
|
</receiver>
|
||||||
|
|
||||||
|
|
||||||
</application>
|
</application>
|
||||||
|
|
||||||
<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />
|
<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />
|
||||||
@ -65,6 +67,7 @@
|
|||||||
<uses-permission android:name="android.permission.CHANGE_WIFI_MULTICAST_STATE"/>
|
<uses-permission android:name="android.permission.CHANGE_WIFI_MULTICAST_STATE"/>
|
||||||
<uses-permission android:name="android.permission.READ_PHONE_STATE"/>
|
<uses-permission android:name="android.permission.READ_PHONE_STATE"/>
|
||||||
<uses-permission android:name="android.permission.BATTERY_STATS" />
|
<uses-permission android:name="android.permission.BATTERY_STATS" />
|
||||||
|
<uses-permission android:name="android.permission.RECEIVE_SMS" />
|
||||||
|
<uses-permission android:name="android.permission.READ_CONTACTS" />
|
||||||
|
|
||||||
</manifest>
|
</manifest>
|
||||||
|
@ -14,11 +14,11 @@ import org.kde.connect.LinkProviders.AvahiTcpLinkProvider;
|
|||||||
import org.kde.connect.LinkProviders.BaseLinkProvider;
|
import org.kde.connect.LinkProviders.BaseLinkProvider;
|
||||||
import org.kde.connect.PackageInterfaces.BasePackageInterface;
|
import org.kde.connect.PackageInterfaces.BasePackageInterface;
|
||||||
import org.kde.connect.PackageInterfaces.BatteryMonitorPackageInterface;
|
import org.kde.connect.PackageInterfaces.BatteryMonitorPackageInterface;
|
||||||
import org.kde.connect.PackageInterfaces.CallPackageInterface;
|
import org.kde.connect.PackageInterfaces.CallNotificationPackageInterface;
|
||||||
import org.kde.connect.PackageInterfaces.ClipboardPackageInterface;
|
import org.kde.connect.PackageInterfaces.ClipboardPackageInterface;
|
||||||
import org.kde.connect.PackageInterfaces.MprisControlPackageInterface;
|
import org.kde.connect.PackageInterfaces.MprisControlPackageInterface;
|
||||||
import org.kde.connect.PackageInterfaces.PingPackageInterface;
|
import org.kde.connect.PackageInterfaces.PingPackageInterface;
|
||||||
import org.kde.kdeconnect.R;
|
import org.kde.connect.PackageInterfaces.SmsNotificationPackageInterface;
|
||||||
|
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.HashMap;
|
import java.util.HashMap;
|
||||||
@ -47,21 +47,15 @@ public class BackgroundService extends Service {
|
|||||||
Log.e("registerPackageInterfacesFromSettings","registerPackageInterfacesFromSettings");
|
Log.e("registerPackageInterfacesFromSettings","registerPackageInterfacesFromSettings");
|
||||||
|
|
||||||
if (settings.getBoolean("call_interface", true)) {
|
if (settings.getBoolean("call_interface", true)) {
|
||||||
addPackageInterface(CallPackageInterface.class);
|
addPackageInterface(CallNotificationPackageInterface.class);
|
||||||
} else {
|
} else {
|
||||||
removePackageInterface(CallPackageInterface.class);
|
removePackageInterface(CallNotificationPackageInterface.class);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (settings.getBoolean("ping_interface", true)) {
|
if (settings.getBoolean("sms_interface", true)) {
|
||||||
addPackageInterface(PingPackageInterface.class);
|
addPackageInterface(SmsNotificationPackageInterface.class);
|
||||||
} else {
|
} else {
|
||||||
removePackageInterface(PingPackageInterface.class);
|
removePackageInterface(SmsNotificationPackageInterface.class);
|
||||||
}
|
|
||||||
|
|
||||||
if (settings.getBoolean("clipboard_interface", true)) {
|
|
||||||
addPackageInterface(ClipboardPackageInterface.class);
|
|
||||||
} else {
|
|
||||||
removePackageInterface(ClipboardPackageInterface.class);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (settings.getBoolean("battery_interface", true)) {
|
if (settings.getBoolean("battery_interface", true)) {
|
||||||
@ -70,12 +64,24 @@ public class BackgroundService extends Service {
|
|||||||
removePackageInterface(BatteryMonitorPackageInterface.class);
|
removePackageInterface(BatteryMonitorPackageInterface.class);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (settings.getBoolean("clipboard_interface", true)) {
|
||||||
|
addPackageInterface(ClipboardPackageInterface.class);
|
||||||
|
} else {
|
||||||
|
removePackageInterface(ClipboardPackageInterface.class);
|
||||||
|
}
|
||||||
|
|
||||||
if (settings.getBoolean("mpris_interface", true)) {
|
if (settings.getBoolean("mpris_interface", true)) {
|
||||||
addPackageInterface(MprisControlPackageInterface.class);
|
addPackageInterface(MprisControlPackageInterface.class);
|
||||||
} else {
|
} else {
|
||||||
removePackageInterface(MprisControlPackageInterface.class);
|
removePackageInterface(MprisControlPackageInterface.class);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (settings.getBoolean("ping_interface", true)) {
|
||||||
|
addPackageInterface(PingPackageInterface.class);
|
||||||
|
} else {
|
||||||
|
removePackageInterface(PingPackageInterface.class);
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public BasePackageInterface getPackageInterface(Class c) {
|
public BasePackageInterface getPackageInterface(Class c) {
|
||||||
|
45
KdeConnect/src/main/java/org/kde/connect/ContactsHelper.java
Normal file
45
KdeConnect/src/main/java/org/kde/connect/ContactsHelper.java
Normal file
@ -0,0 +1,45 @@
|
|||||||
|
package org.kde.connect;
|
||||||
|
|
||||||
|
import android.content.Context;
|
||||||
|
import android.database.Cursor;
|
||||||
|
import android.net.Uri;
|
||||||
|
import android.provider.ContactsContract;
|
||||||
|
import android.provider.ContactsContract.PhoneLookup;
|
||||||
|
import android.util.Log;
|
||||||
|
|
||||||
|
public class ContactsHelper {
|
||||||
|
|
||||||
|
public static String phoneNumberLookup(Context context, String number) {
|
||||||
|
|
||||||
|
Log.e("PhoneNumberLookup", number);
|
||||||
|
|
||||||
|
Uri uri = Uri.withAppendedPath(PhoneLookup.CONTENT_FILTER_URI, Uri.encode(number));
|
||||||
|
Cursor cursor = null;
|
||||||
|
try {
|
||||||
|
cursor = context.getContentResolver().query(
|
||||||
|
uri,
|
||||||
|
new String[] {
|
||||||
|
PhoneLookup.DISPLAY_NAME
|
||||||
|
/*, PhoneLookup.TYPE
|
||||||
|
, PhoneLookup.LABEL
|
||||||
|
, PhoneLookup.ID */
|
||||||
|
},
|
||||||
|
null, null, null);
|
||||||
|
} catch (IllegalArgumentException e) {
|
||||||
|
return number;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Take the first match only
|
||||||
|
if (cursor != null && cursor.moveToFirst()) {
|
||||||
|
int nameIndex = cursor.getColumnIndex(ContactsContract.PhoneLookup.DISPLAY_NAME);
|
||||||
|
if (nameIndex != -1) {
|
||||||
|
String name = cursor.getString(nameIndex);
|
||||||
|
Log.e("PhoneNumberLookup", "success: " + name);
|
||||||
|
return name;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return number;
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
@ -17,10 +17,14 @@ public class NetworkPackage {
|
|||||||
|
|
||||||
public final static String PACKAGE_TYPE_IDENTITY = "kdeconnect.identity";
|
public final static String PACKAGE_TYPE_IDENTITY = "kdeconnect.identity";
|
||||||
public final static String PACKAGE_TYPE_PING = "kdeconnect.ping";
|
public final static String PACKAGE_TYPE_PING = "kdeconnect.ping";
|
||||||
public final static String PACKAGE_TYPE_NOTIFICATION = "kdeconnect.notification";
|
|
||||||
public final static String PACKAGE_TYPE_BATTERY = "kdeconnect.battery";
|
|
||||||
public final static String PACKAGE_TYPE_CALL = "kdeconnect.call";
|
public final static String PACKAGE_TYPE_CALL = "kdeconnect.call";
|
||||||
|
//public final static String PACKAGE_TYPE_SMS = "kdeconnect.sms";
|
||||||
|
public final static String PACKAGE_TYPE_BATTERY = "kdeconnect.battery";
|
||||||
|
public final static String PACKAGE_TYPE_NOTIFICATION = "kdeconnect.notification";
|
||||||
|
|
||||||
public final static String PACKAGE_TYPE_CLIPBOARD = "kdeconnect.clipboard";
|
public final static String PACKAGE_TYPE_CLIPBOARD = "kdeconnect.clipboard";
|
||||||
|
|
||||||
public final static String PACKAGE_TYPE_MPRIS = "kdeconnect.mpris";
|
public final static String PACKAGE_TYPE_MPRIS = "kdeconnect.mpris";
|
||||||
|
|
||||||
private long mId;
|
private long mId;
|
||||||
|
@ -1,5 +1,6 @@
|
|||||||
package org.kde.connect.PackageInterfaces;
|
package org.kde.connect.PackageInterfaces;
|
||||||
|
|
||||||
|
import android.content.BroadcastReceiver;
|
||||||
import android.content.Context;
|
import android.content.Context;
|
||||||
|
|
||||||
import org.kde.connect.Device;
|
import org.kde.connect.Device;
|
||||||
|
@ -5,11 +5,12 @@ import android.telephony.PhoneStateListener;
|
|||||||
import android.telephony.TelephonyManager;
|
import android.telephony.TelephonyManager;
|
||||||
import android.util.Log;
|
import android.util.Log;
|
||||||
|
|
||||||
|
import org.kde.connect.ContactsHelper;
|
||||||
import org.kde.connect.Device;
|
import org.kde.connect.Device;
|
||||||
import org.kde.connect.NetworkPackage;
|
import org.kde.connect.NetworkPackage;
|
||||||
|
|
||||||
|
|
||||||
public class CallPackageInterface extends BasePackageInterface {
|
public class CallNotificationPackageInterface extends BasePackageInterface {
|
||||||
|
|
||||||
private Context context;
|
private Context context;
|
||||||
|
|
||||||
@ -31,6 +32,7 @@ public class CallPackageInterface extends BasePackageInterface {
|
|||||||
|
|
||||||
lastPackage.set("notificationType", "ringing");
|
lastPackage.set("notificationType", "ringing");
|
||||||
if (phoneNumber != null && !phoneNumber.isEmpty()) {
|
if (phoneNumber != null && !phoneNumber.isEmpty()) {
|
||||||
|
phoneNumber = ContactsHelper.phoneNumberLookup(context,phoneNumber);
|
||||||
lastPackage.set("phoneNumber", phoneNumber);
|
lastPackage.set("phoneNumber", phoneNumber);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -54,6 +56,7 @@ public class CallPackageInterface extends BasePackageInterface {
|
|||||||
//Emit a "call" package
|
//Emit a "call" package
|
||||||
lastPackage = new NetworkPackage(NetworkPackage.PACKAGE_TYPE_CALL);
|
lastPackage = new NetworkPackage(NetworkPackage.PACKAGE_TYPE_CALL);
|
||||||
if (phoneNumber != null && !phoneNumber.isEmpty()) {
|
if (phoneNumber != null && !phoneNumber.isEmpty()) {
|
||||||
|
phoneNumber = ContactsHelper.phoneNumberLookup(context,phoneNumber);
|
||||||
lastPackage.set("phoneNumber", phoneNumber);
|
lastPackage.set("phoneNumber", phoneNumber);
|
||||||
}
|
}
|
||||||
sendPackage(lastPackage);
|
sendPackage(lastPackage);
|
@ -0,0 +1,63 @@
|
|||||||
|
package org.kde.connect.PackageInterfaces;
|
||||||
|
|
||||||
|
import android.content.BroadcastReceiver;
|
||||||
|
import android.content.Context;
|
||||||
|
import android.content.Intent;
|
||||||
|
import android.os.Bundle;
|
||||||
|
import android.telephony.SmsMessage;
|
||||||
|
import android.util.Log;
|
||||||
|
|
||||||
|
import org.kde.connect.ContactsHelper;
|
||||||
|
import org.kde.connect.Device;
|
||||||
|
import org.kde.connect.NetworkPackage;
|
||||||
|
import org.kde.kdeconnect.R;
|
||||||
|
|
||||||
|
public class SmsNotificationPackageInterface extends BasePackageInterface {
|
||||||
|
|
||||||
|
private Context context;
|
||||||
|
|
||||||
|
public void smsBroadcastReceived(SmsMessage message) {
|
||||||
|
|
||||||
|
Log.e("SmsBroadcastReceived", message.toString());
|
||||||
|
|
||||||
|
if (this.context == null) return;
|
||||||
|
|
||||||
|
NetworkPackage np = new NetworkPackage(NetworkPackage.PACKAGE_TYPE_NOTIFICATION);
|
||||||
|
|
||||||
|
np.set("notificationType","sms");
|
||||||
|
|
||||||
|
String messageBody = message.getMessageBody();
|
||||||
|
if (messageBody != null) {
|
||||||
|
np.set("messageBody",messageBody);
|
||||||
|
}
|
||||||
|
|
||||||
|
String phoneNumber = message.getOriginatingAddress();
|
||||||
|
if (phoneNumber != null) {
|
||||||
|
phoneNumber = ContactsHelper.phoneNumberLookup(context, phoneNumber);
|
||||||
|
np.set("phoneNumber",phoneNumber);
|
||||||
|
};
|
||||||
|
|
||||||
|
sendPackage(np);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean onCreate(Context context) {
|
||||||
|
this.context = context;
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onDestroy() {
|
||||||
|
this.context = null;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean onPackageReceived(Device d, NetworkPackage np) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean onDeviceConnected(Device d) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
@ -7,9 +7,15 @@ import android.content.Intent;
|
|||||||
import android.content.pm.ApplicationInfo;
|
import android.content.pm.ApplicationInfo;
|
||||||
import android.net.ConnectivityManager;
|
import android.net.ConnectivityManager;
|
||||||
import android.net.wifi.WifiManager;
|
import android.net.wifi.WifiManager;
|
||||||
|
import android.os.Bundle;
|
||||||
import android.os.IBinder;
|
import android.os.IBinder;
|
||||||
|
import android.telephony.SmsMessage;
|
||||||
|
import android.telephony.TelephonyManager;
|
||||||
import android.util.Log;
|
import android.util.Log;
|
||||||
|
|
||||||
|
import org.kde.connect.PackageInterfaces.SmsNotificationPackageInterface;
|
||||||
|
import org.kde.kdeconnect.R;
|
||||||
|
|
||||||
public class ServiceLauncher extends BroadcastReceiver
|
public class ServiceLauncher extends BroadcastReceiver
|
||||||
{
|
{
|
||||||
public void onReceive(Context context, Intent intent)
|
public void onReceive(Context context, Intent intent)
|
||||||
@ -49,8 +55,29 @@ public class ServiceLauncher extends BroadcastReceiver
|
|||||||
|
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
} else if(action.equals("android.provider.Telephony.SMS_RECEIVED")) {
|
||||||
|
Log.e("ServiceLauncher","Sms receiver");
|
||||||
|
final Bundle bundle = intent.getExtras();
|
||||||
|
if (bundle == null) return;
|
||||||
|
BackgroundService.RunCommand(context, new BackgroundService.InstanceCallback() {
|
||||||
|
@Override
|
||||||
|
public void onServiceStart(BackgroundService service) {
|
||||||
|
SmsNotificationPackageInterface smsnotify = (SmsNotificationPackageInterface)service.getPackageInterface(SmsNotificationPackageInterface.class);
|
||||||
|
if (smsnotify == null) return;
|
||||||
|
try {
|
||||||
|
Object[] pdus = (Object[]) bundle.get("pdus");
|
||||||
|
for (int i = 0; i < pdus.length; i++) {
|
||||||
|
SmsMessage message = SmsMessage.createFromPdu((byte[])pdus[i]);
|
||||||
|
smsnotify.smsBroadcastReceived(message);
|
||||||
|
}
|
||||||
|
} catch(Exception e) {
|
||||||
|
e.printStackTrace();
|
||||||
|
Log.e("ServiceLauncher","Sms receiver exception");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
});
|
||||||
} else {
|
} else {
|
||||||
Log.e("KdeConnect", "Ignoring broadcast event: "+intent.getAction());
|
Log.e("ServiceLauncher", "Ignoring broadcast event: "+intent.getAction());
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -10,8 +10,8 @@
|
|||||||
android:orientation="vertical">
|
android:orientation="vertical">
|
||||||
|
|
||||||
<Button android:id="@+id/button1" android:layout_width="match_parent" android:layout_height="wrap_content" android:text="Restart avahi"/>
|
<Button android:id="@+id/button1" android:layout_width="match_parent" android:layout_height="wrap_content" android:text="Restart avahi"/>
|
||||||
|
<Button android:id="@+id/button2" android:layout_width="match_parent" android:layout_height="wrap_content" android:text="Send ping"/>
|
||||||
<Button android:id="@+id/button3" android:layout_width="match_parent" android:layout_height="wrap_content" android:text="Mpris controls"/>
|
<Button android:id="@+id/button3" android:layout_width="match_parent" android:layout_height="wrap_content" android:text="Mpris controls"/>
|
||||||
<Button android:id="@+id/button2" android:layout_width="match_parent" android:layout_height="wrap_content" android:text="Send ping to all"/>
|
|
||||||
|
|
||||||
<ListView
|
<ListView
|
||||||
android:layout_width="fill_parent"
|
android:layout_width="fill_parent"
|
||||||
|
@ -4,13 +4,16 @@
|
|||||||
<string name="action_settings" >Settings</string>
|
<string name="action_settings" >Settings</string>
|
||||||
<string name="pref_enable_call_interface">Call notifications</string>
|
<string name="pref_enable_call_interface">Call notifications</string>
|
||||||
<string name="pref_enable_call_interface_desc">Send incoming and missed call notifications</string>
|
<string name="pref_enable_call_interface_desc">Send incoming and missed call notifications</string>
|
||||||
<string name="pref_enable_clipboard_interface">Clipboard sync</string>
|
<string name="pref_enable_sms_interface">SMS notifications</string>
|
||||||
<string name="pref_enable_clipboard_interface_desc">Share the clipboard content</string>
|
<string name="pref_enable_sms_interface_desc">Send incoming sms notifications</string>
|
||||||
<string name="pref_enable_battery_interface">Battery report</string>
|
<string name="pref_enable_battery_interface">Battery report</string>
|
||||||
<string name="pref_enable_battery_interface_desc">Periodically report battery status</string>
|
<string name="pref_enable_battery_interface_desc">Periodically report battery status</string>
|
||||||
|
<string name="pref_enable_clipboard_interface">Clipboard sync</string>
|
||||||
|
<string name="pref_enable_clipboard_interface_desc">Share the clipboard content</string>
|
||||||
<string name="pref_enable_mpris_interface">MPRIS controls</string>
|
<string name="pref_enable_mpris_interface">MPRIS controls</string>
|
||||||
<string name="pref_enable_mpris_interface_desc">Control audio/video from your phone</string>
|
<string name="pref_enable_mpris_interface_desc">Control audio/video from your phone</string>
|
||||||
<string name="pref_enable_ping_interface">Pings</string>
|
<string name="pref_enable_ping_interface">Pings</string>
|
||||||
<string name="pref_enable_ping_interface_desc">Enable sending and receiving ping notifications</string>
|
<string name="pref_enable_ping_interface_desc">Enable sending and receiving ping notifications</string>
|
||||||
|
|
||||||
|
|
||||||
</resources>
|
</resources>
|
||||||
|
@ -10,15 +10,9 @@
|
|||||||
android:defaultValue="true" />
|
android:defaultValue="true" />
|
||||||
|
|
||||||
<CheckBoxPreference
|
<CheckBoxPreference
|
||||||
android:key="ping_interface"
|
android:key="sms_interface"
|
||||||
android:title="@string/pref_enable_ping_interface"
|
android:title="@string/pref_enable_sms_interface"
|
||||||
android:summary="@string/pref_enable_ping_interface_desc"
|
android:summary="@string/pref_enable_sms_interface_desc"
|
||||||
android:defaultValue="true" />
|
|
||||||
|
|
||||||
<CheckBoxPreference
|
|
||||||
android:key="clipboard_interface"
|
|
||||||
android:title="@string/pref_enable_clipboard_interface"
|
|
||||||
android:summary="@string/pref_enable_clipboard_interface_desc"
|
|
||||||
android:defaultValue="true" />
|
android:defaultValue="true" />
|
||||||
|
|
||||||
<CheckBoxPreference
|
<CheckBoxPreference
|
||||||
@ -27,10 +21,22 @@
|
|||||||
android:summary="@string/pref_enable_battery_interface_desc"
|
android:summary="@string/pref_enable_battery_interface_desc"
|
||||||
android:defaultValue="true" />
|
android:defaultValue="true" />
|
||||||
|
|
||||||
|
<CheckBoxPreference
|
||||||
|
android:key="clipboard_interface"
|
||||||
|
android:title="@string/pref_enable_clipboard_interface"
|
||||||
|
android:summary="@string/pref_enable_clipboard_interface_desc"
|
||||||
|
android:defaultValue="true" />
|
||||||
|
|
||||||
<CheckBoxPreference
|
<CheckBoxPreference
|
||||||
android:key="mpris_interface"
|
android:key="mpris_interface"
|
||||||
android:title="@string/pref_enable_mpris_interface"
|
android:title="@string/pref_enable_mpris_interface"
|
||||||
android:summary="@string/pref_enable_mpris_interface_desc"
|
android:summary="@string/pref_enable_mpris_interface_desc"
|
||||||
android:defaultValue="true" />
|
android:defaultValue="true" />
|
||||||
|
|
||||||
|
<CheckBoxPreference
|
||||||
|
android:key="ping_interface"
|
||||||
|
android:title="@string/pref_enable_ping_interface"
|
||||||
|
android:summary="@string/pref_enable_ping_interface_desc"
|
||||||
|
android:defaultValue="true" />
|
||||||
|
|
||||||
</PreferenceScreen>
|
</PreferenceScreen>
|
Loading…
x
Reference in New Issue
Block a user