什么是反思,为什么它有用?
我对Java特别感兴趣,但我认为在任何语言中原则都是一样的.
我看到一些SO帖子讨论了如何以程序方式结束电话,例如,这个.是的,人们专注于结果,但没有人真正解释它为什么起作用的原因?
我尝试了代码,效果很好.但是我想了解更多关于底下发生的事情的细节?为什么通过创建ITelephony.aidl,ITelephony我们的项目中暴露了android隐藏的内部接口?我们如何创建ITelephony.aidl和自动生成的java(/gen/ITelephony.java)链接到 android的ITelephony界面?是否只是因为名称匹配(包名和援助文件名)?
TelephonyManager tm = (TelephonyManager) context
.getSystemService(Context.TELEPHONY_SERVICE);
Class c = Class.forName(tm.getClass().getName());
Method m = c.getDeclaredMethod("getITelephony");
m.setAccessible(true);
//Why does the android internal ITelephony interface is exposed after created the ITelephony.aidl?
com.android.internal.telephony.ITelephony telephonyService = (ITelephony) m.invoke(tm);
telephonyService.endCall();
Run Code Online (Sandbox Code Playgroud) 我想在android中拒绝传入,我从这些链接中看到了很多代码.
但是我仍然无法做到这一点,任何人都可以通过简单易行的步骤告诉我该怎么做?
截至到Android 7.1,有可能最终通过来电ITelephony.endCall()方法,并给予您的应用程序的权限android.permission.CALL_PHONE和android.permission.READ_PHONE_STATE.
在做同样的事情时Android 8.0 Oreo (API 26),我得到这个错误
12-09 18:11:25.195 16833-16833/li.doerf.leavemealone E/TelephonyServiceCallHangup:缺少权限MODIFY_PHONE_STATE,无法挂断电话
由于MODIFY_PHONE_STATE是受保护的权限,我的应用无法获取.有没有办法以编程方式结束来电Android 8.0+?
我不知道如何在android中以编程方式转发语音邮件?
有没有办法在没有root权限的情况下以编程方式回答Android 6.0中的来电?我尝试了以下方法:
android.permission.MODIFY_PHONE_STATE在Android 6.0中未提供给第三方应用.android ×5
telephony ×2
aidl ×1
callblocking ×1
java ×1
performance ×1
phone-call ×1
reflection ×1
terminology ×1
voicemail ×1