将服务器类添加到android.jar

时间:2011-06-20 16:42:09

标签: android api

现在我可以访问隐藏的和内部的android API,但现在我想访问服务器中的AlarmManagerService之类的东西。我使用adb pull system/framework/services.jar更改了services.jarservices.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;

1 个答案:

答案 0 :(得分:1)

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