我正在开发一个系统应用程序,该应用程序使用我用来制作我自己的 ROM(来自 AOSP)的平台密钥进行签名,但我必须在我的代码中做一些变通方法才能使用平台类和函数,当我尝试直接使用它们 Android Studio 告诉我我正在尝试使用隐藏的 API。
我想编写设置、启动器、框架等代码。我知道他们的来源,这就是我编写自己的方式,但我必须使用反射来调用类,尝试按照它们的编写方式甚至不是在 Android Studio 上构建。
我不想使用 root 命令来存档我的应用程序的功能,这就是我这样做的原因。我正在构建的 ROM 将在没有对用户(用户构建)的 root 访问权限的情况下安装。
例如在设置应用程序中,启用 MTP 存储:
UsbManager mUsbManager = (UsbManager) getSystemService(Context.USB_SERVICE);
mUsbManager.setCurrentFunction(UsbManager.USB_FUNCTION_MTP, true);
Run Code Online (Sandbox Code Playgroud)
但是如果我在 Android Studio 中使用该代码,它甚至不被识别为有效:
http://i.stack.imgur.com/R86OW.png(截图)
我必须这样做才能存档(它目前以这种方式工作):
UsbManager UsbManagerP = (UsbManager)getSystemService(Context.USB_SERVICE);
String setCurrentFunctionMethodName = "setCurrentFunction";
Method setCurrentFunctionMethod = null;
try {
setCurrentFunctionMethod = UsbManagerP.getClass().getMethod(setCurrentFunctionMethodName, String.class, boolean.class);
setCurrentFunctionMethod.invoke(UsbManagerP, "mtp",true);
Log.d("OBS", "MTP ACTIVO");
} catch (NoSuchMethodException e) {
Log.d("OBS", "Error No Existe Metodo");
} catch (InvocationTargetException e) {
Log.d("OBS", "Error No Existe Objetivo");
} …Run Code Online (Sandbox Code Playgroud)