我已经signed-google_ion-ota-14721.zip为我的HTC手机下载并编译了带有图像的Android 2.1版本.编译成功完成,因此系统映像闪烁.如何使用系统签名签署我自己的Android应用程序?
有人可以描述使用系统签名签署用户应用程序的整个过程,因为我对签名过程完全不熟悉.
所以在4.3中有一个系统应用程序的概念.放入的APK /system/app被授予系统权限.从4.4开始,有一个新的"特权应用程序"概念.特权应用程序存储在/system/priv-app目录中,似乎有不同的对待.如果你查看下面的AOSP源代码PackageManagerService,你会看到新的方法,如
static boolean locationIsPrivileged(File path) {
try {
final String privilegedAppDir = new File(Environment.getRootDirectory(), "priv-app")
.getCanonicalPath();
return path.getCanonicalPath().startsWith(privilegedAppDir);
} catch (IOException e) {
Slog.e(TAG, "Unable to access code path " + path);
}
return false;
}
Run Code Online (Sandbox Code Playgroud)
所以这里是一个不同的情况的例子.
public final void addActivity(PackageParser.Activity a, String type) {
...
if (!systemApp && intent.getPriority() > 0 && "activity".equals(type)) {
intent.setPriority(0);
Log.w(TAG, "Package " + a.info.applicationInfo.packageName + " has activity "
+ a.className + " with priority > 0, …Run Code Online (Sandbox Code Playgroud) 将我的Android应用程序签名为系统应用程序
在我的公司,我们希望在现场完全控制电池消耗,仅使用2g和gps可以快速耗尽电池.我们的决定是我们需要拥有移动电话的root权限,这样当手机闲置时,我们会关闭那些不必要的电池消耗.而且我们也不允许用户将其卸载并清除数据.
我的问题是:
如何区分系统应用程序和普通应用程序?我浏览了android PackageManager并找不到任何东西.
编辑:我想通过代码区分.
if(system app) {
//do something
}
else{
//do nothing
}
Run Code Online (Sandbox Code Playgroud) 某些设备具有额外的安全功能,并在显示权限对话框时检查应用是否在其他设备上绘制.
我有一个侧边栏应用程序,我的应用程序必须被禁用,然后用户才能接受系统对话框.
问题
编辑
我能想到的一个解决方案如下:
使用AccessibilityService以检查当前前台应用程序/视图.在那里,我将能够检查显示当前前景活动甚至视图的事件......
我的问题:
可能重复:
如何检查应用是否是Android中的非系统应用?
此代码返回包括Android系统和时钟等系统应用程序在内的所有内容.
public List<ApplicationInfo> getApps() {
final PackageManager pm = context.getPackageManager();
List<ApplicationInfo> packages = pm
.getInstalledApplications(PackageManager.GET_META_DATA);
return packages;
}
Run Code Online (Sandbox Code Playgroud)
如何区分这些和用户安装的应用程序?