我的项目的构建路径上有一个库(jar).项目使用以下意图访问jar中的MainActivity:
final Intent it = new Intent();
it.setClassName("com.example.lib", "com.example.lib.MainActivity");
startActivity(it);
Run Code Online (Sandbox Code Playgroud)
它曾经工作了一段时间,但突然开始得到'ActivityNotFoundException:没有找到活动来处理Intent',我能够解决它.但是现在我遇到了'java.lang.SecurityException:Permission Denial:start Intent'.
我已经尝试了所有关于stackoverflow的建议(检查清单文件中的重复项;将lib:exported ="true"添加到lib清单; Eclipse> Project> Clean;添加/修改'intent-filter'标签;等等).我甚至尝试重新编写项目的清单,但没有去任何地方.
这是logcat输出:
11-07 06:20:52.176: E/AndroidRuntime(4626): FATAL EXCEPTION: main
11-07 06:20:52.176: E/AndroidRuntime(4626): java.lang.SecurityException: Permission Denial: starting Intent { cmp=com.example.lib/.MainActivity } from ProcessRecord{40dd3778 4626:com.example.project/u0a10046} (pid=4626, uid=10046) not exported from uid 10047
11-07 06:20:52.176: E/AndroidRuntime(4626): at android.os.Parcel.readException(Parcel.java:1425)
11-07 06:20:52.176: E/AndroidRuntime(4626): at android.os.Parcel.readException(Parcel.java:1379)
11-07 06:20:52.176: E/AndroidRuntime(4626): at android.app.ActivityManagerProxy.startActivity(ActivityManagerNative.java:1885)
11-07 06:20:52.176: E/AndroidRuntime(4626): at android.app.Instrumentation.execStartActivity(Instrumentation.java:1412)
11-07 06:20:52.176: E/AndroidRuntime(4626): at android.app.Activity.startActivityForResult(Activity.java:3370)
11-07 06:20:52.176: E/AndroidRuntime(4626): at android.app.Activity.startActivityForResult(Activity.java:3331)
11-07 06:20:52.176: E/AndroidRuntime(4626): at …Run Code Online (Sandbox Code Playgroud)