从APK加载服务:android:exported = false

时间:2013-06-13 19:15:23

标签: android security reflection apk

我想从一个APK加载一个服务,它位于/ system / app / LALA。问题是,我收到以下错误,因为在APP AndroidManifest中,服务有android:exported = false。有没有办法加载它?

  

代码

String packagePath = "other.app.package";    
String apkName = null;
try {
    apkName = getPackageManager().getApplicationInfo(packagePath, 0).sourceDir;
} catch (Exception e) {
    e.printStackTrace();
}
PathClassLoader cLoader = new PathClassLoader(apkName, ClassLoader.getSystemClassLoader());
Context otherAppContext = createPackageContext(appPackage, CONTEXT_IGNORE_SECURITY | CONTEXT_INCLUDE_CODE);    
String servicePath = packagePath + ".path.to.Service";
Class<?> Service = null;
try {
    Service = Class.forName(servicePath, true, cLoader);
} catch (Exception e) {
    e.printStackTrace();
}    
otherAppContext.startService(new Intent(otherAppContext, Service));
  

错误

     

引起:java.lang.SecurityException:不允许在未经uid X导出的权限的情况下启动服务Intent {cmp = other.app.package / .path.to.Service}

[]的

1 个答案:

答案 0 :(得分:1)

  

有没有办法加载它?

不,抱歉。如果未导出该服务,则只能由其自己的应用程序在内部使用。