Solución:
¿También es posible abrir estas cosas mediante programación?
sí:
Intent in = new Intent(Intent.ACTION_MAIN);
in.setClassName("com.android.settings", "com.android.settings.TestingSettings");
startActivity(in);
Solo necesita ver la salida de logcat para saber qué abre realmente esta combinación mágica:
I / ActivityManager (31362): START {act = android.intent.action.MAIN flg = 0x10000000 cmp = com.android.settings / .TestingSettings} desde el pid 4257
Los códigos secretos existen y funcionan independientemente de la aplicación del marcador. La aplicación del marcador solo proporciona una interfaz práctica para estos códigos. Reconoce la cadena especial y luego llama a una intención especial para invocar la acción. No debe usar el marcador para llamar a estos cuadros de diálogo. En su lugar, puede llamar a los códigos secretos directamente usted mismo como lo hace el marcador internamente:
Invocación de códigos secretos integrados:
Lo que realmente hace el marcador cuando ingresa el código es extraer el número entre * # * # y # * # * y luego transmitir la siguiente intención:
sendBroadcast(new Intent("android.provider.Telephony.SECRET_CODE", Uri.parse("android_secret_code://4636")));
Registre sus propios códigos secretos (si lo desea):
Incluso puede registrar sus propias acciones de código secreto usando:
<action android:name="android.provider.Telephony.SECRET_CODE" />
<data android:scheme="android_secret_code" android:host="4636" />
Fuente: http://android.amberfog.com/?p=422
Editar: Se corrigió un error en el código original (ver comentario)
prueba esto
String ussdCode = "*" +Uri.encode ("#")+"*"+Uri.encode ("#")+ "4636" + Uri.encode ("#")+"*"+Uri.encode ("#")+"*";
startActivity (new Intent ("android.intent.action.CALL", Uri.parse ("tel:" + ussdCode)));
finalmente debes codificar ‘#’ usando Uri.encode()