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