[转载]调用Android隐藏类(系统aidl文件)
2013-08-07 14:35
1101 查看
Android没有对外公开结束通话的API,如果需要结束通话,必须使用AIDL与电话管理服务进行通信,并调用服务中的API实现结束通话,方法如下:
1> 从Android的源代码中拷贝以下文件到项目中:
com.android.internal.telephony包下的ITelephony.aidl (对应 Android 版本源码目录下 basetelephonyjavacomandroidinternaltelephony目录下)
android.telephony包下的NeighboringCellInfo.aidl
注意:需要在项目中建立对应的包名存放上述两个aidl文件,
2> 调用ITelephony.endCall()结束通话:
Method method = Class.forName("android.os.ServiceManager").getMethod("getService", String.class);
IBinder binder = (IBinder)method.invoke(null, new Object[]{TELEPHONY_SERVICE});
ITelephony telephony = ITelephony.Stub.asInterface(binder);
telephony.endCall();
3> 以上只是ITelephony 的用法之一。可应用于实现电话的黑名单功能 -- 监听电话来电状态,判断其若是黑名单号码,即用上面所示当时挂断电话。
另外还有其它很多实用的方法,例如,其 call 方法可以直接拨打出电话,获取电话呼叫状态等方法,本人并没有深入研究。
在清单文件AndroidManifest.xml中添加权限:
<uses-permission android:name="android.permission.CALL_PHONE" />
4>使用android系统开发:
[b]private INotificationManager im = null;
ServiceConnection sc = new ServiceConnection(){
public void onServiceConnected(ComponentName cn, IBinder ib) {
im = INotificationManager.Stub.asInterface(ServiceManager.getService("notification")); //此方法在android sdk开发不可
//用,在系统开发下可行。
}
public void onServiceDisconnected(ComponentName cn) { }
};[/b]
1> 从Android的源代码中拷贝以下文件到项目中:
com.android.internal.telephony包下的ITelephony.aidl (对应 Android 版本源码目录下 basetelephonyjavacomandroidinternaltelephony目录下)
android.telephony包下的NeighboringCellInfo.aidl
注意:需要在项目中建立对应的包名存放上述两个aidl文件,
2> 调用ITelephony.endCall()结束通话:
Method method = Class.forName("android.os.ServiceManager").getMethod("getService", String.class);
IBinder binder = (IBinder)method.invoke(null, new Object[]{TELEPHONY_SERVICE});
ITelephony telephony = ITelephony.Stub.asInterface(binder);
telephony.endCall();
3> 以上只是ITelephony 的用法之一。可应用于实现电话的黑名单功能 -- 监听电话来电状态,判断其若是黑名单号码,即用上面所示当时挂断电话。
另外还有其它很多实用的方法,例如,其 call 方法可以直接拨打出电话,获取电话呼叫状态等方法,本人并没有深入研究。
在清单文件AndroidManifest.xml中添加权限:
<uses-permission android:name="android.permission.CALL_PHONE" />
4>使用android系统开发:
[b]private INotificationManager im = null;
ServiceConnection sc = new ServiceConnection(){
public void onServiceConnected(ComponentName cn, IBinder ib) {
im = INotificationManager.Stub.asInterface(ServiceManager.getService("notification")); //此方法在android sdk开发不可
//用,在系统开发下可行。
}
public void onServiceDisconnected(ComponentName cn) { }
};[/b]
相关文章推荐
- 调用Android隐藏类(系统aidl文件)
- Android开发工具之Android Studio--调用系统隐藏方法之操作aidl文件步骤
- 调用Android隐藏类(系统aidl文件)
- <转载>Android中调用系统所装的软件打开文件
- Android调用系统应用程序(打电话,发短信,打开文件,浏览器)
- Android中调用系统所装的软件打开文件
- 在 Android 系统中直接调用 SO文件(包含System.loadLibrary加载so的路径解释)
- Android 系统中隐藏文件或文件夹的方法
- Android开发-调用系统隐藏API
- Android中调用系统的文件浏览器及自制简单的文件浏览器
- 在 Android 系统中直接调用 SO文件(包含System.loadLibrary加载so的路径解释)
- Android调用系统自带的文件管理器进行文件选择并读取
- Android中调用系统所装的软件打开文件
- android如何调用显示和隐藏系统默认的输入法
- Android调用系统内部的下载程序下载文件(二)
- android调用系统自带的文件管理程序选择文件
- android如何调用显示和隐藏系统默认的输入法
- Android 调用系统相机拍照(适配7.0)、从图库选择图片、从数据库读取联系人信息、相册图片、扫描文件
- android-实现仿系统search框的autoCompleteTextView----如何调用系统的隐藏方法
- android如何调用显示和隐藏系统默认的输入法