안 드 로 이 드 프레임 워 크 에 사용자 정의 시스템 서 비 스 를 추가 합 니 다.
1. frameworks / base / core / java / android / app / 에 aidl 파일 추가
frameworks/base/core/java/android/app/ISystemStatusManager.aidl
package android.app; interface ISystemStatusManager { String[] getSystemStatus(); }
2. frameworks / base / android. mk 파일 을 수정 하고 aidl 을 이 파일 에 추가 해 야 컴 파일 할 수 있 습 니 다. 그렇지 않 으 면 컴 파일 할 수 없습니다.core/java/android/app/ISystemStatusManager.aidl \ LOCAL_SRC_FILES
3. frameworks / base / services / core / java / com / android / server / 에 service 파일 추가frameworks/base/services/core/java/com/android/server/SystemStatusManagerService.java
package com.android.server; import android.app.ISystemStatusManager; import android.content.Context; import android.os.Build; import android.util.Slog; import java.text.SimpleDateFormat; import java.util.Date; public class SystemStatusManagerService extends ISystemStatusManager.Stub { private Context mContext; public SystemStatusManagerService(Context context) { mContext = context; Slog.d("SystemStatus", "Date:" + getDateTime() + "
Version:" + getVersion()); } @Override public String[] getSystemStatus() { String[] infos = new String[2]; infos[0] = "Date:" + getDateTime(); infos[1] = "Version:" + getVersion(); return infos; } private String getDateTime() { SimpleDateFormat format = new SimpleDateFormat("yyyy-DD-mm HH:mm:s"); Date date = new Date(System.currentTimeMillis()); return format.format(date); } private String getVersion() { return Build.DISPLAY; } }
4. frameworks / base / core / java / android / app / 에 manager 추가frameworks/base/core/java/android/app/SystemStatusManager.java
package android.app; import android.content.Context; import android.os.RemoteException; import android.util.Slog; public class SystemStatusManager { Context mContext; ISystemStatusManager mService; public SystemStatusManager(Context context, ISystemStatusManager service) { mContext = context; mService = service; } public String[] getSystemStatus() { if (mService != null) { try { return mService.getSystemStatus(); } catch (RemoteException e) { Slog.e("SystemStatus", "RemoteException " + e); return null; } } return null; } }
5. frameworks / base / core / java / android / content / context. java 에 service 이름 정 의 를 추가 합 니 다.public static final String SYSTEM_STATUS_SERVICE = "system_status_service";
6. frameworks / base / services / java / com / android / server / System Server. java 에 서비스 추가
try { ServiceManager.addService(Context.SYSTEM_STATUS_SERVICE, new SystemStatusManagerService(context)); } catch (Throwable e) { Slog.e(TAG, "Failure starting System Status Service ", e); }
7. frameworks / base / core / java / android / app / contextImpl. java 에 서 비 스 를 등록 합 니 다.
registerService(SYSTEM_STATUS_SERVICE, new ServiceFetcher() { public Object createService(ContextImpl ctx) { IBinder b = ServiceManager.getService(SYSTEM_STATUS_SERVICE); return new SystemStatusManager(ctx, ISystemStatusManager.Stub.asInterface(b)); } });
8. framework. jar 와 services. jar 를 컴 파일 하여 핸드폰 으로 push 하고 핸드폰 을 다시 시작 합 니 다.
D/SystemStatus( 910): Date:2017-01-00 00:00:13
D/SystemStatus( 910): Version:xxx
9. 시스템 app 이 이 서 비 스 를 사용 해 야 한다 면 다음 과 같은 방식 으로 호출 할 수 있 습 니 다.
SystemStatusManager mManager = (SystemStatusManager) getSystemService(Context.SYSTEM_STATUS_SERVICE); try { String[] infos = mManager.getSystemStatus(); Log.i("SystemStatus", "SystemStatus Date:" + infos[0] + "
Version:" + infos[1]); } catch (Exception e) { e.printStackTrace(); }
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Bitrise에서 배포 어플리케이션 설정 테스트하기이 글은 Bitrise 광고 달력의 23일째 글입니다. 자체 또는 당사 등에서 Bitrise 구축 서비스를 사용합니다. 그나저나 며칠 전 Bitrise User Group Meetup #3에서 아래 슬라이드를 발표했...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.