是进程名相同的Android包名? [英] Is process name same as package name in android?
问题描述
通过过程中,我的意思是我们在提供安卓过程
并通过包我的意思是包
<清单的xmlns:机器人=http://schemas.android.com/apk/res/android
包=com.osg.appkiller
安卓版code =1
机器人:=的versionName1.0>
我想获得的所有正在运行的应用程序的名称。所以,这就是我在寻找各种来源(和它的作品)之后做了。
ActivityManager activityManager =(ActivityManager)getSystemService(Context.ACTIVITY_SERVICE);
软件包管理系统软件包管理系统= getPackageManager();
最终名单< RunningAppProcessInfo> runningProcesses = activityManager.getRunningAppProcesses();
对于(RunningAppProcessInfo processInfo:runningProcesses){
CharSequence中的appName = NULL;
尝试{
的appName = packageManager.getApplicationLabel(packageManager.getApplicationInfo(processInfo.processName,PackageManager.GET_META_DATA));
}赶上(ē的NameNotFoundException){
Log.e(TAG,应用程序的信息没有发现过程:+ processInfo.processName,E);
}
}
如果您看到PackageManager.getApplicationInfo文档
ApplicationInfo android.content.pm.PackageManager.getApplicationInfo(字符串的packageName,INT标志)抛出的NameNotFoundException
但我传递
processInfo.processName
其中processName是进程运行的名字。所以,我们基本上都采用进程名作为包名获得应用程序信息。
- 首先是这种做法是否正确?
- 其次,这是真的,如果我们没有为活动/服务等提供了新的工艺过程与同名的包名的创建?
在默认情况下采用的Android作为进程名包名。但是,如果你在清单文件的应用程序标记来定义流程属性安卓过程=com.example.newprocessname
则应用程序将使用该名称com.example.newprocessname运行
至于你的问题,
-
1>在这种情况下,您的应用程序的名称是一样的默认包名称,这就是为什么它是工作。试着改变进程名。它会无法正常工作。
-
2->这是真的。这是默认。请参阅机器人:过程中的以下链接:https://developer.android.com/guide/topics/manifest/application-element.html
希望这回答您的问题!
By process I mean what we provide in android:process
and by package I mean package in
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.osg.appkiller"
android:versionCode="1"
android:versionName="1.0" >
More details Processes and Threads - Android Developer
I wanted to get application names of all running apps. So this is what I did after looking at various sources (and it works).
ActivityManager activityManager = (ActivityManager) getSystemService(Context.ACTIVITY_SERVICE);
PackageManager packageManager = getPackageManager();
final List<RunningAppProcessInfo> runningProcesses = activityManager.getRunningAppProcesses();
for(RunningAppProcessInfo processInfo : runningProcesses) {
CharSequence appName = null;
try {
appName = packageManager.getApplicationLabel(packageManager.getApplicationInfo(processInfo.processName, PackageManager.GET_META_DATA));
} catch (NameNotFoundException e) {
Log.e(TAG,"Application info not found for process : " + processInfo.processName,e);
}
}
If you see Documentation for PackageManager.getApplicationInfo
ApplicationInfo android.content.pm.PackageManager.getApplicationInfo(String packageName, int flags) throws NameNotFoundException
but I am passing
processInfo.processName
where processName is name of process running. So we are basically using process name as package name to get application info.
- First of all is this approach correct ?
- Secondly is it true that if we do not provide process for activities/services etc new process is created with same name as that of package name ?
By default android takes the package name as the process name. But if you define process property in application tag in manifest file android:process="com.example.newprocessname"
then the application will run with this name "com.example.newprocessname".
As for your questions,
1-> In this case your application name is same as the default package name, that's why it is working. Try changing the process name. It'll not work.
2-> That's true. It is by default. Refer to "android:process" in the following link: https://developer.android.com/guide/topics/manifest/application-element.html
Hope this answers your question!
这篇关于是进程名相同的Android包名?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!