相关疑难解决方法(0)

Android 5.1.1及更高版本 - getRunningAppProcesses()仅返回我的应用程序包

谷歌似乎最终关闭了获取当前前台应用程序包的所有大门.

在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 android-6.0-marshmallow

97
推荐指数
3
解决办法
8万
查看次数

安卓 AIDL 安全

应用程序使用 AIDL 调用远程服务时是否提供任何安全性?或者它只是像恶意应用程序可以读取数据一样?

android aidl

7
推荐指数
1
解决办法
3198
查看次数

Android 内容提供商保护级别和不同的密钥

我有一个应用程序提供专业版(付费)和免费版(添加支持)。两个版本都使用相同的密钥存储进行签名,但每个版本都有自己的密钥别名。

现在,我想开发一个与两个版本兼容的插件,通过内容提供商提供数据。数据很敏感,因此我需要只能从我的应用程序(专业版和免费版)访问我的内容提供程序。

使用 android:protectionLevel="signature" 的权限不起作用,因为免费版和专业版没有相同的签名 :/ 。我想我应该使用相同的密钥对我的两个版本进行签名,但我认为 Play 商店中的每个应用程序都需要使用自己的密钥进行签名。

那么,有人知道解决方案吗?有没有办法温和地要求谷歌更改我正在使用的密钥(我可以证明我的身份,因为我没有丢失我的密钥),或者我被卡住了?

编辑:我可以选择取消发布专业版(因为我目前的下载量很少)并使用与免费版本相同的证书重新上传它。如果这样做,我需要更改其包吗?

提前致谢

android key signature android-contentprovider

4
推荐指数
1
解决办法
2340
查看次数