Android源码添加服务

Android源码添加服务,第1张

1.添加.AIDL文件

/frameworks/base/core/java/android/os/IHelloService.aidl

[java] view plain copy

package android.os

interface IHelloService

{

String test_service(String input)

}

在/frameworks/base/Android.mk 把aidl文件加入到源码编译器中

[java] view plain copy

core/java/android/os/IHelloService.aidl \

2.编写服务类

/frameworks/base/services/java/com/android/server/HelloService.java

[java] view plain copy

package com.android.server

import android.os.IHelloService

import android.os.IBinder

import android.content.Context

import android.util.Log

public class HelloService extends IHelloService.Stub

{

private static final String TAG="HelloService"

@Override

public String test_service(String input){

Log.i(TAG,"eva HelloService HelloService,test_service()) method")

return input

}

public HelloService()

{

super()

Log.i(TAG,"eva HelloService Constructor method")

}

}

3.编写服务管理器

/frameworks/base/core/java/android/os/TestServiceManager/frameworks/base/core/java/android/os/HelloManager.java

[java] view plain copy

package android.os

import android.os.IHelloService

import android.content.Context

import android.os.RemoteException

import android.util.Log

public class HelloManager

{

//Basic Member

android.os.IHelloService mService

private static final String TAG="HelloManager"

//Constructor

public HelloManager(Context ctx,android.os.IHelloService service)

{

mService=service

Log.i(TAG,"eva HelloManager Constructor method")

}

public String test_service(String input){

try{

Log.i(TAG,"eva HelloManager Constructor mService.test_service")

return mService.test_service(input)

}catch(RemoteException e)

{

return e.getMessage()

}

}

}

4.注册服务

/frameworks/base/core/java/android/app/SystemServiceRegistry.java

[java] view plain copy

import android.os.IHelloService

import android.os.HelloManager

registerService("HELLO_SERVICE",HelloManager.class,

new CachedServiceFetcher<HelloManager>(){

@Override

public HelloManager createService(ContextImpl ctx)

{

IBinder b = ServiceManager.getService("HELLO_SERVICE")

Log.i(TAG,"eva SystemServiceRegistry registerService method")

return new HelloManager(ctx,IHelloService.Stub.asInterface(b))

}})

5.启动服务

/frameworks/base/services/java/com/android/server/SystemServer.java

[java] view plain copy

import com.android.server.HelloService

ServiceManager.addService("HELLO_SERVICE", new HelloService())

6.将服务加入到源码中,编译备份

/external/sepolicy/service.te

[java] view plain copy

type hello_service, system_api_service, system_server_service, service_manager_type

7.给服务权限

/external/sepolicy/service_contexts

[java] view plain copy

HELLO_SERVICE u:object_r:hello_service:s0

8.Demo

MainActivity.java

[java] view plain copy

package com.example.testservicedemo

import android.app.Activity

import android.os.Bundle

import android.view.View

import android.view.View.OnClickListener

import android.widget.Button

import android.widget.EditText

import android.widget.TextView

import android.os.HelloManager

public class MainActivity extends Activity {

private EditText writeEdit

private Button readBtn

private TextView showInfo

private HelloManager mTestServiceManager

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState)

setContentView(R.layout.activity_main)

writeEdit = (EditText)findViewById(R.id.input)

readBtn = (Button)findViewById(R.id.read)

showInfo = (TextView)findViewById(R.id.showinfo)

mTestServiceManager = (HelloManager)getSystemService("HELLO_SERVICE")

readBtn.setOnClickListener(new OnClickListener() {

@Override

public void onClick(View v) {

// TODO Auto-generated method stub

String inputString = writeEdit.getText().toString()

String result = mTestServiceManager.test_service(inputString)

showInfo.setText(result)

}

})

}

}

您可以通过“解决方案资源管理器”向源代码管理添加项目和解决方案。此添加 *** 作将本地文件系统位置中的新文件和文件夹添加到 Team Foundation 源代码管理 服务器。向源代码管理添加解决方案或项目在“工具”菜单中单击“选项”。在“选项”对话框中选择“源代码管理”。从“当前源代码管理插件”列表中选择“Visual Studio Team Foundation Server”。 在“解决方案资源管理器”中,右击解决方案,然后选择“将解决方案添加到源代码管理”。在“将解决方案添加到源代码管理”对话框(如果您已经打开了工作区,将看不到此对话框 - 系统会自动添加该解决方案,并且不会要求您提供文件夹)中,定位到“团队项目位置”下要添加项目或解决方案的位置,然后接受默认值,或者单击“新建文件夹”并在“键入解决方案文件夹的名称”文本框中输入所需的文件夹名或更改解决方案文件夹的名称。注意您可以选择单击“高级”,然后为解决方案选择替换映射。有关更多信息,请参见如何:为解决方案选择替换映射。单击“确定”。一旦通过执行签入提交了添加 *** 作,解决方案即添加到源代码管理服务器。有关更多信息,请参见向源代码管理服务器提交更改。注意也可以从命令行或 Visual Studio 菜单添加解决方案和项目;但是,以这两种方式添加项目和解决方案并不会绑定它们。该绑定负责提供源代码管理功能,包括在解决方案资源管理器中指示状态的各种源代码管理图标。有关更多信息,请参见如何:绑定和取消绑定项目和解决方案、Add 命令 和如何:将非项目或非解决方案文件/文件夹添加到源代码管理。安全若要执行这些过程,您必须将“签出”权限设置为“允许”。

如何在eclipse导入JAVA源码并启动WEB服务

eclipse打开并运行一个已经写好的java文件步骤如下:1、新建一个java工程项目:右键Eclipse的PackageExplorer空白部分,点击New,再点击JavaProject,输入工程名,点击finish;

2、在新建的工程里新建一个类:右键工程,点击New,再点击Class,输入类名,点击finish;3、把写好的java文件的代码复制到新建的类中;4、右键新建的类文件,点击RunAs,再点击JavaApplication即可运行Java文件。需要注意的是:java文件要成功运行,前提是要有主方法(main)的存在,没有主方法没办法运行java程序。


欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/bake/11515795.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-16
下一篇 2023-05-16

发表评论

登录后才能评论

评论列表(0条)

保存