Merge changes Ia219ff78,I3fd52525 into mnc-dev

* changes:
  Add phone permissions to Shell
  Add adb shell command to register/unregister phone accounts
This commit is contained in:
Yorke Lee
2015-06-04 16:34:53 +00:00
committed by Android (Google) Code Review
2 changed files with 44 additions and 9 deletions

View File

@@ -20,6 +20,7 @@ import android.content.ComponentName;
import android.content.Context;
import android.os.RemoteException;
import android.os.ServiceManager;
import android.telecom.PhoneAccount;
import android.telecom.PhoneAccountHandle;
import android.text.TextUtils;
@@ -39,8 +40,10 @@ public final class Telecom extends BaseCommand {
(new Telecom()).run(args);
}
private static final String COMMAND_SET_PHONE_ACOUNT_ENABLED = "set-phone-account-enabled";
private static final String COMMAND_SET_PHONE_ACOUNT_DISABLED = "set-phone-account-disabled";
private static final String COMMAND_SET_PHONE_ACCOUNT_ENABLED = "set-phone-account-enabled";
private static final String COMMAND_SET_PHONE_ACCOUNT_DISABLED = "set-phone-account-disabled";
private static final String COMMAND_REGISTER_PHONE_ACCOUNT = "register-phone-account";
private static final String COMMAND_UNREGISTER_PHONE_ACCOUNT = "unregister-phone-account";
private static final String COMMAND_SET_DEFAULT_DIALER = "set-default-dialer";
private static final String COMMAND_GET_DEFAULT_DIALER = "get-default-dialer";
@@ -54,6 +57,8 @@ public final class Telecom extends BaseCommand {
"usage: telecom [subcommand] [options]\n" +
"usage: telecom set-phone-account-enabled <COMPONENT> <ID>\n" +
"usage: telecom set-phone-account-disabled <COMPONENT> <ID>\n" +
"usage: telecom register-phone-account <COMPONENT> <ID> <LABEL>\n" +
"usage: telecom unregister-phone-account <COMPONENT> <ID>\n" +
"usage: telecom set-default-dialer <PACKAGE>\n" +
"usage: telecom get-default-dialer <PACKAGE>\n" +
"\n" +
@@ -63,9 +68,9 @@ public final class Telecom extends BaseCommand {
"telecom set-phone-account-disabled: Disables the given phone account, if it \n" +
" has already been registered with telecom.\n" +
"\n" +
"telecom set-default_dialer: Sets the default dialer to the given component. \n" +
"telecom set-default-dialer: Sets the default dialer to the given component. \n" +
"\n" +
"telecom get-default_dialer: Displays the current default dialer. \n"
"telecom get-default-dialer: Displays the current default dialer. \n"
);
}
@@ -80,12 +85,18 @@ public final class Telecom extends BaseCommand {
String command = nextArgRequired();
switch (command) {
case COMMAND_SET_PHONE_ACOUNT_ENABLED:
case COMMAND_SET_PHONE_ACCOUNT_ENABLED:
runSetPhoneAccountEnabled(true);
break;
case COMMAND_SET_PHONE_ACOUNT_DISABLED:
case COMMAND_SET_PHONE_ACCOUNT_DISABLED:
runSetPhoneAccountEnabled(false);
break;
case COMMAND_REGISTER_PHONE_ACCOUNT:
runRegisterPhoneAccount();
break;
case COMMAND_UNREGISTER_PHONE_ACCOUNT:
runUnregisterPhoneAccount();
break;
case COMMAND_SET_DEFAULT_DIALER:
runSetDefaultDialer();
break;
@@ -98,9 +109,7 @@ public final class Telecom extends BaseCommand {
}
private void runSetPhoneAccountEnabled(boolean enabled) throws RemoteException {
final ComponentName component = parseComponentName(nextArgRequired());
final String accountId = nextArgRequired();
final PhoneAccountHandle handle = new PhoneAccountHandle(component, accountId);
final PhoneAccountHandle handle = getPhoneAccountHandleFromArgs();
final boolean success = mTelecomService.enablePhoneAccount(handle, enabled);
if (success) {
System.out.println("Success - " + handle + (enabled ? " enabled." : " disabled."));
@@ -109,6 +118,21 @@ public final class Telecom extends BaseCommand {
}
}
private void runRegisterPhoneAccount() throws RemoteException {
final PhoneAccountHandle handle = getPhoneAccountHandleFromArgs();
final String label = nextArgRequired();
PhoneAccount account = PhoneAccount.builder(handle, label)
.setCapabilities(PhoneAccount.CAPABILITY_CALL_PROVIDER).build();
mTelecomService.registerPhoneAccount(account);
System.out.println("Success - " + handle + " registered.");
}
private void runUnregisterPhoneAccount() throws RemoteException {
final PhoneAccountHandle handle = getPhoneAccountHandleFromArgs();
mTelecomService.unregisterPhoneAccount(handle);
System.out.println("Success - " + handle + " unregistered.");
}
private void runSetDefaultDialer() throws RemoteException {
final String packageName = nextArgRequired();
final boolean success = mTelecomService.setDefaultDialer(packageName);
@@ -124,6 +148,12 @@ public final class Telecom extends BaseCommand {
System.out.println(mTelecomService.getDefaultDialerPackage());
}
private PhoneAccountHandle getPhoneAccountHandleFromArgs() {
final ComponentName component = parseComponentName(nextArgRequired());
final String accountId = nextArgRequired();
return new PhoneAccountHandle(component, accountId);
}
private ComponentName parseComponentName(String component) {
ComponentName cn = ComponentName.unflattenFromString(component);
if (cn == null) {

View File

@@ -25,6 +25,7 @@
<!-- Standard permissions granted to the shell. -->
<uses-permission android:name="android.permission.SEND_SMS" />
<uses-permission android:name="android.permission.CALL_PHONE" />
<uses-permission android:name="android.permission.READ_PHONE_STATE" />
<uses-permission android:name="android.permission.READ_CONTACTS" />
<uses-permission android:name="android.permission.WRITE_CONTACTS" />
<uses-permission android:name="android.permission.READ_CALENDAR" />
@@ -97,6 +98,10 @@
<uses-permission android:name="android.permission.CHANGE_APP_IDLE_STATE" />
<uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS" />
<uses-permission android:name="android.permission.MOUNT_FORMAT_FILESYSTEMS" />
<uses-permission android:name="android.permission.MODIFY_PHONE_STATE" />
<uses-permission android:name="android.permission.REGISTER_CALL_PROVIDER" />
<uses-permission android:name="android.permission.REGISTER_CONNECTION_MANAGER" />
<uses-permission android:name="android.permission.REGISTER_SIM_SUBSCRIPTION" />
<application android:label="@string/app_label">
<provider