在许多Android设备上,您可以通过输入来进入Phone应用程序的秘密设置菜单
*#*#4636#*#*
http://technology-headlines.com/2010/09/17/4636-android-secret-codes/
还有一些其他代码.
是否也可以通过编程方式打开这些东西?
我试过这个:
Intent intent = new Intent(Intent.ACTION_CALL);
intent.setData(Uri.parse("tel:*#*#4636#*#*"));
startActivity(intent);
Run Code Online (Sandbox Code Playgroud)
但它只是尝试发起电话,当然失败,挂机并关闭手机应用程序.
编辑:电话*#*#4636#*#*以"未知"的形式保存到我的联系人列表中,但呼叫失败.实际上,只有当您在手机应用程序中的按钮上手动输入而不按最后一次调用时,密码才有效.它可能只是Phone应用程序的隐藏功能,与调用无关吗?如果是这样,可以通过编程方式打开手机应用程序并模拟按钮上的输入.
根据这篇文章,以 编程方式按下另一个应用程序活动中的按钮
这应该是不可能的,因为如果非根电话上的任何应用程序可以启动其他应用程序并按下那里的东西,它可以接管整个设备的控制并做坏事.
这里有一些更多的细节,但我想这个帖子有点旧,即使它有效,它可能已经在当前的Android版本中更改:http: //mylifewithandroid.blogspot.de/2009/01/generating-keypresses-programmatically.html
那么,没有更简单的方法来输入密码?
Poi*_*ull 19
是否也可以通过编程方式打开这些东西?
是的:
Intent in = new Intent(Intent.ACTION_MAIN);
in.setClassName("com.android.settings", "com.android.settings.TestingSettings");
startActivity(in);
Run Code Online (Sandbox Code Playgroud)
您只需要观察logcat输出以了解这个神奇组合实际打开的内容:
I/ActivityManager(31362):从pid 4257开始{act = android.intent.action.MAIN flg = 0x10000000 cmp = com.android.settings/.TestingSettings}
aKz*_*enT 19
密码存在并且独立于拨号器应用而工作.拨号器应用程序只为这些代码提供了方便的界面.它识别特殊字符串,然后调用特殊意图来调用该操作.您不应该使用拨号程序来调用这些对话框.相反,您可以像拨号器内部一样直接调用密码:
调用内置密码:
输入代码时拨号器的作用是提取*#*#和#*#*之间的数字,然后广播以下意图:
sendBroadcast(new Intent("android.provider.Telephony.SECRET_CODE", Uri.parse("android_secret_code://4636")));
Run Code Online (Sandbox Code Playgroud)
注册您自己的密码(如果您愿意):
您甚至可以使用以下方式注册自己的密码操作:
<action android:name="android.provider.Telephony.SECRET_CODE" />
<data android:scheme="android_secret_code" android:host="4636" />
Run Code Online (Sandbox Code Playgroud)
来源:http://android.amberfog.com/?p = 422
编辑:修复了原始代码中的错误(请参阅注释)
试试这个
String ussdCode = "*" +Uri.encode ("#")+"*"+Uri.encode ("#")+ "4636" + Uri.encode ("#")+"*"+Uri.encode ("#")+"*";
startActivity (new Intent ("android.intent.action.CALL", Uri.parse ("tel:" + ussdCode)));
Run Code Online (Sandbox Code Playgroud)
最后你必须使用编码'#' Uri.encode()
| 归档时间: |
|
| 查看次数: |
43777 次 |
| 最近记录: |