service调用bugreport
来源:互联网 发布:kali linux arp 编辑:程序博客网 时间:2024/06/11 16:16
/*****************************************************************************************************/
/*****************************************************************************************************/
service的类型并非只有 service list列出的那些,还有如下的类型?
packages/apps/yyyy/app/klorobot/src/com/xxxx/klo/bugreport/service/FeedbackBackgroundService.java
public class FeedbackBackgroundService extends Service {
public void handleMessage(Message msg) {
Utils.logD(TAG, "handleMessage");
switch (msg.what) {
case MSG_COLLECTING_LOG:
collectLogs();
sendAnalytics();
break;
case MSG_PACKING:
preparingSubmit();
break;
case MSG_SUBMIT_FEEDBACK:
submit();
break;
case MSG_STOP_SELF:
Utils.logD(TAG, "handleMessage stopSelf");
stopSelf();
break;
case MSG_RECORD_KLO_ANALYTICS:
sendAnalytics();
sendMsgToTarget(MSG_STOP_SELF);
break;
case MSG_ACTIVE_UPLOAD_KLO_BUGREPORT:
activeUploadKLOBugreport();
break;
default :
}
}
private void activeUploadKLOBugreport() {
/**
* 1. Generate klobugreport
* */
dumpLogs();
if (mServiceStatus == Globals.FEEDBACK_SERVICE_STOP_SELF) {
sendMsgToTarget(MSG_STOP_SELF);
} else {
packFeedback();
}
if (!Utils.isWifiConnected(getApplicationContext())) {
Utils.logI(TAG, "activeUploadKLOBugreport not wifi return");
sendMsgToTarget(MSG_STOP_SELF);
return;
}
}
private void dumpLogs() {
Utils.logD(TAG, "dumpLogs");
String logFileName = "bugreport_" + System.currentTimeMillis() + ".log";
int androidVersion = 0;
try {
androidVersion = android.os.Build.VERSION.SDK_INT;
} catch (NumberFormatException e) {
}
if (androidVersion >= 21) {
Utils.logD(TAG, "dumpLogs androidVersion >= 21");
dumpLogsHighVersion(logFileName);
} else {
Utils.logD(TAG, "dumpLogs androidVersion < 21");
dumpLogsLowVersionNoVibrate(logFileName);
}
}
/*****************************************************************************************************/
java层怎样获得wak lock?
//get wake lock
PowerManager pm = (PowerManager) getSystemService(Context.POWER_SERVICE);
WakeLock wakeLock = pm.newWakeLock(PowerManager.PARTIAL_WAKE_LOCK, "klorobot");
// Most hold the wakelock in 5 mins.
wakeLock.acquire(5 * DateUtils.MINUTE_IN_MILLIS);
//release wake lock
if (wakeLock.isHeld()) {
wakeLock.release();
}
/*****************************************************************************************************/
packages/apps/yyyy/app/klorobot/jni/com_xxxx_klorobot_FeedbackBackgroundService.cpp
static const JNINativeMethod methods[] = {
{"nativeKLOFeatureEnable", "(I)I",
(void*)com_xxxx_klo_bugreport_EnableKLO },
{"nativeDumpBugreport", "(Ljava/lang/String;I)I",
(void*)com_xxxx_klo_bugreport_dump_bugreport}
};
static jint com_xxxx_klo_bugreport_dump_bugreport(JNIEnv *env, jobject clazz,
jstring name, jint level) {
int32_t ret = 0;
ALOGD("klobugreport com_xxxx_klorobotrelease_dump_bugreport");
const char* name_info = NULL;
if (name != NULL) {
name_info = env->GetStringUTFChars(name, 0);
ret = klo_dump_bugreport(name_info, level);
if (name_info != NULL) {
env->ReleaseStringUTFChars(name, name_info);
env->DeleteLocalRef(name);
}
} else {
ALOGE("klobugreport name == null");
ret = -1;
}
return (jint) ret;
}
int32_t klo_dump_bugreport(const char *file_path, int32_t level) {
FILE* dest_fp = fopen(file_path, "w");
fflush(stdout);
dup2(fileno(dest_fp), fileno(stdout));
ret = dump_customized_bugreport(level);
fclose(dest_fp);
return ret;
}
int32_t dump_customized_bugreport(int32_t level) {
ALOGD("klobugreport dump_customized_bugreport level:%d\n", level);
int32_t ret = -1;
if (2 == level) {
dump_customized_bugreport_simplified();
ret = 2;
} else if (3 == level) {
dump_customized_bugreport_simplified_2();
ret = 3;
} else if (4 == level) {
dump_customized_bugreport_simplified_3();
ret = 4;
}
fflush(stdout);
return ret;
}
/************************************************************************************************/
AndroidManifest.xml
<service
android:name=".service.FeedbackBackgroundService"
android:exported="true"
android:permission="com.xxxx.klo.bugreport.permission.FEEDBACK_SERVICE"
>
</service>
<service
android:name=".service.MemoryCollectionService"
android:exported="false" />
/*****************************************************************************************************/
service的类型并非只有 service list列出的那些,还有如下的类型?
packages/apps/yyyy/app/klorobot/src/com/xxxx/klo/bugreport/service/FeedbackBackgroundService.java
public class FeedbackBackgroundService extends Service {
public void handleMessage(Message msg) {
Utils.logD(TAG, "handleMessage");
switch (msg.what) {
case MSG_COLLECTING_LOG:
collectLogs();
sendAnalytics();
break;
case MSG_PACKING:
preparingSubmit();
break;
case MSG_SUBMIT_FEEDBACK:
submit();
break;
case MSG_STOP_SELF:
Utils.logD(TAG, "handleMessage stopSelf");
stopSelf();
break;
case MSG_RECORD_KLO_ANALYTICS:
sendAnalytics();
sendMsgToTarget(MSG_STOP_SELF);
break;
case MSG_ACTIVE_UPLOAD_KLO_BUGREPORT:
activeUploadKLOBugreport();
break;
default :
}
}
private void activeUploadKLOBugreport() {
/**
* 1. Generate klobugreport
* */
dumpLogs();
if (mServiceStatus == Globals.FEEDBACK_SERVICE_STOP_SELF) {
sendMsgToTarget(MSG_STOP_SELF);
} else {
packFeedback();
}
if (!Utils.isWifiConnected(getApplicationContext())) {
Utils.logI(TAG, "activeUploadKLOBugreport not wifi return");
sendMsgToTarget(MSG_STOP_SELF);
return;
}
}
private void dumpLogs() {
Utils.logD(TAG, "dumpLogs");
String logFileName = "bugreport_" + System.currentTimeMillis() + ".log";
int androidVersion = 0;
try {
androidVersion = android.os.Build.VERSION.SDK_INT;
} catch (NumberFormatException e) {
}
if (androidVersion >= 21) {
Utils.logD(TAG, "dumpLogs androidVersion >= 21");
dumpLogsHighVersion(logFileName);
} else {
Utils.logD(TAG, "dumpLogs androidVersion < 21");
dumpLogsLowVersionNoVibrate(logFileName);
}
}
/*****************************************************************************************************/
java层怎样获得wak lock?
//get wake lock
PowerManager pm = (PowerManager) getSystemService(Context.POWER_SERVICE);
WakeLock wakeLock = pm.newWakeLock(PowerManager.PARTIAL_WAKE_LOCK, "klorobot");
// Most hold the wakelock in 5 mins.
wakeLock.acquire(5 * DateUtils.MINUTE_IN_MILLIS);
//release wake lock
if (wakeLock.isHeld()) {
wakeLock.release();
}
/*****************************************************************************************************/
packages/apps/yyyy/app/klorobot/jni/com_xxxx_klorobot_FeedbackBackgroundService.cpp
static const JNINativeMethod methods[] = {
{"nativeKLOFeatureEnable", "(I)I",
(void*)com_xxxx_klo_bugreport_EnableKLO },
{"nativeDumpBugreport", "(Ljava/lang/String;I)I",
(void*)com_xxxx_klo_bugreport_dump_bugreport}
};
static jint com_xxxx_klo_bugreport_dump_bugreport(JNIEnv *env, jobject clazz,
jstring name, jint level) {
int32_t ret = 0;
ALOGD("klobugreport com_xxxx_klorobotrelease_dump_bugreport");
const char* name_info = NULL;
if (name != NULL) {
name_info = env->GetStringUTFChars(name, 0);
ret = klo_dump_bugreport(name_info, level);
if (name_info != NULL) {
env->ReleaseStringUTFChars(name, name_info);
env->DeleteLocalRef(name);
}
} else {
ALOGE("klobugreport name == null");
ret = -1;
}
return (jint) ret;
}
int32_t klo_dump_bugreport(const char *file_path, int32_t level) {
FILE* dest_fp = fopen(file_path, "w");
fflush(stdout);
dup2(fileno(dest_fp), fileno(stdout));
ret = dump_customized_bugreport(level);
fclose(dest_fp);
return ret;
}
int32_t dump_customized_bugreport(int32_t level) {
ALOGD("klobugreport dump_customized_bugreport level:%d\n", level);
int32_t ret = -1;
if (2 == level) {
dump_customized_bugreport_simplified();
ret = 2;
} else if (3 == level) {
dump_customized_bugreport_simplified_2();
ret = 3;
} else if (4 == level) {
dump_customized_bugreport_simplified_3();
ret = 4;
}
fflush(stdout);
return ret;
}
/************************************************************************************************/
AndroidManifest.xml
<service
android:name=".service.FeedbackBackgroundService"
android:exported="true"
android:permission="com.xxxx.klo.bugreport.permission.FEEDBACK_SERVICE"
>
</service>
<service
android:name=".service.MemoryCollectionService"
android:exported="false" />
0 0
- service调用bugreport
- bugreport
- bugreport
- android bugreport.
- android bugreport. .
- 分析bugreport
- Service调用
- Android Log Analysis bugreport
- android bugreport分析
- Android bugreport分析
- android BugReport 中的信息
- android bugreport 分析
- bugreport分析方法
- bugreport命令、dumpstate服务
- android bugreport 分析
- bugreport 源码篇
- adb shell bugreport分析
- Bugreport实战篇(二)
- hdu4920Matrix multiplication(模3矩阵相乘)
- Lock和Synchronized区别
- 每天一个linux命令(1):ls命令
- 在OpenCV for Android 2.4.5中使用SURF(nonfree module)
- 远程服务
- service调用bugreport
- Windows下如何卸载MySQL
- 求职系列1--树构造、遍历
- JSON--List集合转换成JSON对象
- VNC服务器空间统计脚本
- 每天一个linux命令(2):cd命令
- stl string 源代码分析
- vs调试中的即时窗口Immediate Window
- Opencv3.1.0+opencv_contrib配置及使用SIFT测试