Agregue clases de servidor a android.jar
En este momento soy capaz de obtener acceso a las APIs de Android oculta e interna, pero ahora quiero tener acceso a cosas como AlarmManagerService
que está en el servidor. Utilicé adb pull system/framework/services.jar
cambió services.jar
a services.zip
que desempaquetó un directorio de todas las clases de servidor (incluyendo AlarmManagerService que estaba buscando). Mi pregunta ahora es ¿cómo puedo agregar esas clases de servidor a mi archivo android.jar
que puedo usar en Eclipse?
Espero que tenga sentido la forma en que lo redacté. Hazme saber si hay alguna confusión que pueda aclarar.
- API de Android para detectar nuevos medios desde cámara incorporada y micrófono
- Excepción de puntero nulo de Android en la respuesta de Retrofit
- Cargar una foto de la biblioteca con el navegador web de Android
- API SIP de Android: demostraciones admitidas, pero error 'no soportado'
- Pdf visor api / biblioteca para la aplicación de Android?
EDIT: Esencialmente, cuando todo está dicho y hecho, quiero ser capaz de hacer algo como el siguiente sin ningún error:
import com.android.server.AlarmManagerService; public class TestActivity extends Activity { public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); AlarmManagerService ams = new AlarmManagerService(this.getApplicationContext()); ams.setTime(1313); } }
OTRA EDICIÓN:
Me di cuenta de esto después de mirar todo el código fuente.
Clases como AlarmManagerService sólo tienen visibilidad del paquete, por lo que no se puede importar. Algunas clases son públicas, pero muchas otras clases com.android.server tienen constructores de paquetes para que no puedan ser instanciados.
Éstos son los com.android.server. * Puedo importar y crear con éxito un objeto de:
import com.android.server.AttributeCache; import com.android.server.BootReceiver; import com.android.server.BrickReceiver; import com.android.server.ClipboardService; import com.android.server.ConnectivityService; import com.android.server.DevicePolicyManagerService; import com.android.server.DiskStatsService; import com.android.server.DropBoxManagerService; import com.android.server.EntropyService; import com.android.server.InputMethodManagerService; import com.android.server.LocationManagerService; import com.android.server.MasterClearReceiver; import com.android.server.NativeDaemonConnectorException; import com.android.server.NetStatService; import com.android.server.NotificationPlayer; import com.android.server.ProcessMap; import com.android.server.ProcessStats; import com.android.server.SystemBackupAgent; import com.android.server.SystemServer; import com.android.server.ThrottleService; import com.android.server.TwilightCalculator; import com.android.server.Watchdog; import com.android.server.connectivity.Tethering; import com.android.server.status.AnimatedImageView; import com.android.server.status.CloseDragHandle; import com.android.server.status.DateView; import com.android.server.status.ExpandedView; import com.android.server.status.IconMerger; import com.android.server.status.LatestItemView; import com.android.server.status.NotificationData; import com.android.server.status.NotificationLinearLayout; import com.android.server.status.StatusBarService; import com.android.server.status.StatusBarView; import com.android.server.status.StorageNotification; import com.android.server.status.TickerView; import com.android.server.status.TrackingPatternView; import com.android.server.status.TrackingView; import com.android.server.status.UsbStorageActivity;
- Android: Google Map v2 no muestra mapa para la versión apk
- 500 Error interno del servidor para GET en www.googleapis.com/androidpublisher/v1/
- Cómo crear API de sitio web
- Alternativa a FusedLocationProviderApi
- Principal java.lang.RuntimeException: No se puede iniciar la actividad ComponentInfo
- Uso de Retrofit en Android
- Cómo abrir archivos de MS Office en Android
- Aplicación de chat utilizando socket.io
Android.jar contiene sólo los archivos de clase de la API pública y creo que ha realizado cambios en el paquete 'com.android' o en sus paquetes internos. Así que para reflejar los cambios en eclipse hay que agregar la ruta explícitamente a su service.jar a su proyecto. Pero recuerde que esto no se reflejará en tiempo de ejecución, ya que el emulador o el dispositivo que está utilizando no se han actualizado sus cambios. Y no se puede actualizar simplemente modificando el archivo jar, ya que el dispositivo o emulador utiliza la imagen 'system.img' que internamente tiene archivo .dex como biblioteca no el archivo .jar para APIs internas. Para realizar cambios en el dispositivo / emulador tiene que crear el código completo y para ello puede consultar http://source.android.com/source/index.html .
- Cómo deshabilitar Word-wrap en Multiline Android TextView?
- Proveedor "gps" excepción desconocida al intentar eliminarTestProvider