淘先锋技术网

首页 1 2 3 4 5 6 7

现在我可以访问隐藏的和内部的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;

解决方法:

android.jar只包含公共API的类文件,我认为你在’com.android’包或其内部包中进行了更改.因此,要反映eclipse中的更改,您必须将service.jar显式添加到项目中.但请记住,这不会在运行时反映出来,因为您使用的仿真器或设备尚未更新您的更改.并且您无法通过简单地修改jar文件来更新它们,因为设备或模拟器使用图像’system.img’,其内部具有.dex文件作为库而不是内部API的.jar文件.要对设备/模拟器进行更改,您必须构建整个代码,为此您可以参考http://source.android.com/source/index.html.

标签:android,api

来源: https://codeday.me/bug/20190710/1419288.html