【发布时间】:2015-08-11 22:25:00
【问题描述】:
我正在开发一个系统应用程序,该应用程序使用我用来制作自己的 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);
但如果我在 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");
} catch (IllegalAccessException e) {
Log.d("OBS", "Error No Se puede acceder al metodo (illegal access)");
}
我真的需要帮助,也许有人曾在三星/索尼/摩托罗拉等公司工作过,并分享一些有关创建系统应用程序的知识。
【问题讨论】:
标签: java android android-studio