谷歌似乎最终关闭了获取当前前台应用程序包的所有大门.
在Lollipop更新之后,getRunningTasks(int maxNum)由于这个答案,我使用此代码从Lollipop获取前台应用程序包:
final int PROCESS_STATE_TOP = 2;
RunningAppProcessInfo currentInfo = null;
Field field = null;
try {
field = RunningAppProcessInfo.class.getDeclaredField("processState");
} catch (Exception ignored) {
}
ActivityManager am = (ActivityManager) this.getSystemService(Context.ACTIVITY_SERVICE);
List<RunningAppProcessInfo> appList = am.getRunningAppProcesses();
for (RunningAppProcessInfo app : appList) {
if (app.importance == RunningAppProcessInfo.IMPORTANCE_FOREGROUND &&
app.importanceReasonCode == 0 ) {
Integer state = null;
try {
state = field.getInt( app );
} catch (Exception ignored) {
}
if (state != null && state == …Run Code Online (Sandbox Code Playgroud) 我有一个应用程序提供专业版(付费)和免费版(添加支持)。两个版本都使用相同的密钥存储进行签名,但每个版本都有自己的密钥别名。
现在,我想开发一个与两个版本兼容的插件,通过内容提供商提供数据。数据很敏感,因此我需要只能从我的应用程序(专业版和免费版)访问我的内容提供程序。
使用 android:protectionLevel="signature" 的权限不起作用,因为免费版和专业版没有相同的签名 :/ 。我想我应该使用相同的密钥对我的两个版本进行签名,但我认为 Play 商店中的每个应用程序都需要使用自己的密钥进行签名。
那么,有人知道解决方案吗?有没有办法温和地要求谷歌更改我正在使用的密钥(我可以证明我的身份,因为我没有丢失我的密钥),或者我被卡住了?
编辑:我可以选择取消发布专业版(因为我目前的下载量很少)并使用与免费版本相同的证书重新上传它。如果这样做,我需要更改其包吗?
提前致谢