现在我可以访问隐藏的和内部的android API,但现在我想访问服务器中的AlarmManagerService
之类的东西。我使用adb pull system/framework/services.jar
更改了services.jar
到services.zip
,它解压缩了所有服务器类的目录(包括我正在寻找的AlarmManagerService)。我现在的问题是如何将这些服务器类添加到我的android.jar
文件中,然后我可以在Eclipse中使用它?
我希望我的措辞有道理。如果有任何疑惑我可以通知我。
编辑:基本上,当所有的事情都说完了,我希望能够做出类似下面的事情而没有任何错误:
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);
}
}
另一个编辑:
在查看完所有源代码后,我想出了这个。
像AlarmManagerService这样的类只具有包可见性,这就是无法导入它的原因。有些类是公共的,但是许多其他com.android.server类都有包构造函数,所以它们无法实例化。
这是com.android.server。*我能够导入并成功创建一个对象:
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;
答案 0 :(得分:1)
android.jar只包含公共API的类文件,我认为您在'com.android'包或其内部包中进行了更改。因此,要反映eclipse中的更改,您必须将service.jar显式添加到项目中。但请记住,这不会在运行时反映出来,因为您使用的仿真器或设备尚未更新您的更改。并且您无法通过简单地修改jar文件来更新它们,因为设备或模拟器使用图像'system.img',其内部具有.dex文件作为库而不是内部API的.jar文件。要对设备/模拟器进行更改,您必须构建整个代码,为此您可以参考http://source.android.com/source/index.html。