安全异常:给定的调用者包com.android.settings没有在进程ProcessRecord中运行。

3
我使用ActivityGroup来实现TAB UI,并且一个Tab内容是Android设置视图, 我使用了以下方法将其嵌入:

final Intent settings = new Intent(android.provider.Settings.ACTION_SETTINGS);
settings.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
Window subActivity = getLocalActivityManager().startActivity("SubActivity_Settings", settings);
vSettings = subActivity.getDecorView();

它可以在Android 2.3.3中正常工作,但现在我必须升级到Android 4.0, 不幸的是,它不起作用,并显示以下异常信息: 05-13 07:02:36.242: E/AndroidRuntime(1118): java.lang.RuntimeException: Unable to resume activity {com.android.settings/com.android.settings.Settings}: java.lang.SecurityException: Given caller package com.android.settings is not running in process ProcessRecord{414674b0 1118:com.gul.desktop/10040}
请问各位如何解决这个问题?“ProcessRecord”是什么意思?

我也遇到了同样的问题?有没有解决方案?提前感谢,拜托帮帮我。 - Charan Pai
2个回答

3

我在使用ActivityGroup来实现TAB UI

从API Level 11开始,官方已经不再推荐使用它。

但是在Android 2.3.3上它仍然能够正常工作

并不完全正确。看起来它“工作得很好”,但用户实际上无法更改任何您自己的UI不能更改的设置。Android 4.0进一步加强了安全性。

有没有朋友可以告诉我如何解决这个问题

为那些普通SDK应用程序可以修改的设置编写自己的UI,或者通过使用android.provider.Settings上找到的Intent操作,使用startActivity()启动设置应用程序。


0

你会收到这个异常提示,是因为在你的清单文件中可能注册了同一个活动两次或多次。

例如:

<activity android:name=".MainActivity" android:label="@string/app_name"> 
                         ^^^^^^^^^^^^
     <intent-filter> 
         <action android:name="android.intent.action.MAIN" />
         <category android:name="android.intent.category.LAUNCHER" />
     </intent-filter>
 </activity>

<activity android:name=".MainActivity"> </activity>
                         ^^^^^^^^^^^^  

删除不需要的行... 希望这对你有用..!


1
我检查了你提到的XML配置,但是没有起作用。有人告诉我,因为设置不在与我的应用程序相同的UID下运行,我猜Android 4.0加强了安全规则,但我不确定。 - Minilin

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接