Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
weixin_47647075
emmagee
提交
93d35943
E
emmagee
项目概览
weixin_47647075
/
emmagee
与 Fork 源项目一致
从无法访问的项目Fork
通知
2
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
E
emmagee
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
前往新版Gitcode,体验更适合开发者的 AI 搜索 >>
提交
93d35943
编写于
8月 24, 2015
作者:
A
andrewleo
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Added: support 5.1.1: use top command to get pid
上级
669de8a9
变更
3
隐藏空白更改
内联
并排
Showing
3 changed file
with
110 addition
and
27 deletion
+110
-27
VERSION
VERSION
+1
-1
src/com/netease/qa/emmagee/activity/MainPageActivity.java
src/com/netease/qa/emmagee/activity/MainPageActivity.java
+5
-12
src/com/netease/qa/emmagee/utils/ProcessInfo.java
src/com/netease/qa/emmagee/utils/ProcessInfo.java
+104
-14
未找到文件。
VERSION
浏览文件 @
93d35943
1.3.0
2.4
src/com/netease/qa/emmagee/activity/MainPageActivity.java
浏览文件 @
93d35943
...
...
@@ -205,17 +205,10 @@ public class MainPageActivity extends Activity {
boolean
isProcessStarted
=
false
;
long
startTime
=
System
.
currentTimeMillis
();
while
(
System
.
currentTimeMillis
()
<
startTime
+
TIMEOUT
)
{
processList
=
processInfo
.
getRunningProcess
(
getBaseContext
());
for
(
Programe
programe
:
processList
)
{
if
((
programe
.
getPackageName
()
!=
null
)
&&
(
programe
.
getPackageName
().
equals
(
packageName
)))
{
pid
=
programe
.
getPid
();
Log
.
d
(
LOG_TAG
,
"pid:"
+
pid
);
uid
=
programe
.
getUid
();
if
(
pid
!=
0
)
{
isProcessStarted
=
true
;
break
;
}
}
pid
=
processInfo
.
getPidByPackageName
(
getBaseContext
(),
packageName
);
if
(
pid
!=
0
)
{
isProcessStarted
=
true
;
break
;
}
if
(
isProcessStarted
)
{
break
;
...
...
@@ -265,7 +258,7 @@ public class MainPageActivity extends Activity {
int
lastCheckedPosition
=
-
1
;
public
ListAdapter
()
{
programes
=
processInfo
.
get
RunningProces
s
(
getBaseContext
());
programes
=
processInfo
.
get
AllPackage
s
(
getBaseContext
());
}
@Override
...
...
src/com/netease/qa/emmagee/utils/ProcessInfo.java
浏览文件 @
93d35943
...
...
@@ -16,6 +16,9 @@
*/
package
com.netease.qa.emmagee.utils
;
import
java.io.BufferedReader
;
import
java.io.IOException
;
import
java.io.InputStreamReader
;
import
java.util.ArrayList
;
import
java.util.Collections
;
import
java.util.List
;
...
...
@@ -26,7 +29,7 @@ import android.app.ActivityManager.RunningTaskInfo;
import
android.content.Context
;
import
android.content.pm.ApplicationInfo
;
import
android.content.pm.PackageManager
;
import
android.os.
Debug
;
import
android.os.
Build
;
import
android.util.Log
;
/**
...
...
@@ -36,9 +39,11 @@ import android.util.Log;
*/
public
class
ProcessInfo
{
private
static
final
String
LOG_TAG
=
"Emmagee-"
+
ProcessInfo
.
class
.
getSimpleName
();
private
static
final
String
LOG_TAG
=
"Emmagee-"
+
ProcessInfo
.
class
.
getSimpleName
();
private
static
final
String
PACKAGE_NAME
=
"com.netease.qa.emmagee"
;
private
static
final
int
ANDROID_M
=
22
;
/**
* get information of all running processes,including package name ,process
...
...
@@ -50,19 +55,23 @@ public class ProcessInfo {
*/
public
List
<
Programe
>
getRunningProcess
(
Context
context
)
{
Log
.
i
(
LOG_TAG
,
"get running processes"
);
ActivityManager
am
=
(
ActivityManager
)
context
.
getSystemService
(
Context
.
ACTIVITY_SERVICE
);
List
<
RunningAppProcessInfo
>
run
=
am
.
getRunningAppProcesses
();
PackageManager
pm
=
context
.
getPackageManager
();
List
<
Programe
>
progressList
=
new
ArrayList
<
Programe
>();
PackageManager
pm
=
context
.
getPackageManager
();
ActivityManager
am
=
(
ActivityManager
)
context
.
getSystemService
(
Context
.
ACTIVITY_SERVICE
);
List
<
RunningAppProcessInfo
>
run
=
am
.
getRunningAppProcesses
();
for
(
ApplicationInfo
appinfo
:
getPackagesInfo
(
context
))
{
Programe
programe
=
new
Programe
();
if
(((
appinfo
.
flags
&
ApplicationInfo
.
FLAG_SYSTEM
)
>
0
)
||
((
appinfo
.
processName
!=
null
)
&&
(
appinfo
.
processName
.
equals
(
PACKAGE_NAME
))))
{
if
(((
appinfo
.
flags
&
ApplicationInfo
.
FLAG_SYSTEM
)
>
0
)
||
((
appinfo
.
processName
!=
null
)
&&
(
appinfo
.
processName
.
equals
(
PACKAGE_NAME
))))
{
continue
;
}
for
(
RunningAppProcessInfo
runningProcess
:
run
)
{
if
((
runningProcess
.
processName
!=
null
)
&&
runningProcess
.
processName
.
equals
(
appinfo
.
processName
))
{
if
((
runningProcess
.
processName
!=
null
)
&&
runningProcess
.
processName
.
equals
(
appinfo
.
processName
))
{
programe
.
setPid
(
runningProcess
.
pid
);
programe
.
setUid
(
runningProcess
.
uid
);
break
;
...
...
@@ -77,6 +86,76 @@ public class ProcessInfo {
return
progressList
;
}
/**
* get pid by package name
*
* @param context
* context of activity
* @return pid
*/
public
int
getPidByPackageName
(
Context
context
,
String
packageName
)
{
Log
.
i
(
LOG_TAG
,
"start getLaunchedPid"
);
ActivityManager
am
=
(
ActivityManager
)
context
.
getSystemService
(
Context
.
ACTIVITY_SERVICE
);
if
(
Build
.
VERSION
.
SDK_INT
<
ANDROID_M
)
{
List
<
RunningAppProcessInfo
>
run
=
am
.
getRunningAppProcesses
();
for
(
RunningAppProcessInfo
runningProcess
:
run
)
{
if
((
runningProcess
.
processName
!=
null
)
&&
runningProcess
.
processName
.
equals
(
packageName
))
{
return
runningProcess
.
pid
;
}
}
}
else
{
Log
.
i
(
LOG_TAG
,
"use top command to get pid"
);
try
{
Process
p
=
Runtime
.
getRuntime
().
exec
(
"top -m 100 -n 1"
);
BufferedReader
bufferedReader
=
new
BufferedReader
(
new
InputStreamReader
(
p
.
getInputStream
()));
String
line
=
""
;
while
((
line
=
bufferedReader
.
readLine
())
!=
null
)
{
if
(
line
.
contains
(
packageName
))
{
line
=
line
.
trim
();
String
[]
splitLine
=
line
.
split
(
"\\s+"
);
if
(
packageName
.
equals
(
splitLine
[
splitLine
.
length
-
1
]))
{
return
Integer
.
parseInt
(
splitLine
[
0
]);
}
}
}
}
catch
(
IOException
e1
)
{
e1
.
printStackTrace
();
}
}
return
0
;
}
/**
* get information of all installed packages
*
* @param context
* context of activity
* @return all installed packages
*/
public
List
<
Programe
>
getAllPackages
(
Context
context
)
{
Log
.
i
(
LOG_TAG
,
"getAllPackages"
);
List
<
Programe
>
progressList
=
new
ArrayList
<
Programe
>();
PackageManager
pm
=
context
.
getPackageManager
();
for
(
ApplicationInfo
appinfo
:
getPackagesInfo
(
context
))
{
Programe
programe
=
new
Programe
();
if
(((
appinfo
.
flags
&
ApplicationInfo
.
FLAG_SYSTEM
)
>
0
)
||
((
appinfo
.
processName
!=
null
)
&&
(
appinfo
.
processName
.
equals
(
PACKAGE_NAME
))))
{
continue
;
}
programe
.
setPackageName
(
appinfo
.
processName
);
programe
.
setProcessName
(
appinfo
.
loadLabel
(
pm
).
toString
());
programe
.
setIcon
(
appinfo
.
loadIcon
(
pm
));
progressList
.
add
(
programe
);
}
Collections
.
sort
(
progressList
);
return
progressList
;
}
/**
* get information of all applications.
*
...
...
@@ -86,7 +165,8 @@ public class ProcessInfo {
*/
private
List
<
ApplicationInfo
>
getPackagesInfo
(
Context
context
)
{
PackageManager
pm
=
context
.
getApplicationContext
().
getPackageManager
();
List
<
ApplicationInfo
>
appList
=
pm
.
getInstalledApplications
(
PackageManager
.
GET_UNINSTALLED_PACKAGES
);
List
<
ApplicationInfo
>
appList
=
pm
.
getInstalledApplications
(
PackageManager
.
GET_UNINSTALLED_PACKAGES
);
return
appList
;
}
...
...
@@ -100,11 +180,20 @@ public class ProcessInfo {
* @return pid
*/
public
Programe
getProgrameByPackageName
(
Context
context
,
String
packageName
)
{
List
<
Programe
>
processList
=
getRunningProcess
(
context
);
for
(
Programe
programe
:
processList
)
{
if
((
programe
.
getPackageName
()
!=
null
)
&&
(
programe
.
getPackageName
().
equals
(
packageName
)))
{
return
programe
;
if
(
Build
.
VERSION
.
SDK_INT
<
ANDROID_M
)
{
List
<
Programe
>
processList
=
getRunningProcess
(
context
);
for
(
Programe
programe
:
processList
)
{
if
((
programe
.
getPackageName
()
!=
null
)
&&
(
programe
.
getPackageName
().
equals
(
packageName
)))
{
return
programe
;
}
}
}
else
{
Programe
programe
=
new
Programe
();
int
pid
=
getPidByPackageName
(
context
,
packageName
);
programe
.
setPid
(
pid
);
programe
.
setUid
(
0
);
return
programe
;
}
return
null
;
}
...
...
@@ -117,7 +206,8 @@ public class ProcessInfo {
* @return top activity name
*/
public
static
String
getTopActivity
(
Context
context
)
{
ActivityManager
manager
=
(
ActivityManager
)
context
.
getSystemService
(
Context
.
ACTIVITY_SERVICE
);
ActivityManager
manager
=
(
ActivityManager
)
context
.
getSystemService
(
Context
.
ACTIVITY_SERVICE
);
List
<
RunningTaskInfo
>
runningTaskInfos
=
manager
.
getRunningTasks
(
1
);
if
(
runningTaskInfos
!=
null
)
return
(
runningTaskInfos
.
get
(
0
).
topActivity
).
toString
();
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录