I have a library project and a Main project, and I'm trying to start the work defined in the library project from the main project.
Intent intent = new Intent("isr.LAUNCH"); intent.setComponent(new ComponentName("com.ISR", "com.ISR.activity.CameraActivity")); startActivity(intent);
But I get the following exception:
05-14 17:13:42.853: E/AndroidRuntime(29217): java.lang.SecurityException: Permission Denial: starting Intent { act=isr.LAUNCH cmp=com.ISR/.activity.CameraActivity } from ProcessRecord{40aa7178 29217:com.ssbs.sw.SWE/10094} (pid=29217, uid=10094) requires null 05-14 17:13:42.853: E/AndroidRuntime(29217): at android.os.Parcel.readException(Parcel.java:1322) 05-14 17:13:42.853: E/AndroidRuntime(29217): at android.os.Parcel.readException(Parcel.java:1276) 05-14 17:13:42.853: E/AndroidRuntime(29217): at android.app.ActivityManagerProxy.startActivity(ActivityManagerNative.java:1351) 05-14 17:13:42.853: E/AndroidRuntime(29217): at android.app.Instrumentation.execStartActivity(Instrumentation.java:1374) 05-14 17:13:42.853: E/AndroidRuntime(29217): at android.app.Activity.startActivityForResult(Activity.java:2827) 05-14 17:13:42.853: E/AndroidRuntime(29217): at android.support.v4.app.FragmentActivity.startActivityForResult(FragmentActivity.java:817) 05-14 17:13:42.853: E/AndroidRuntime(29217): at android.app.Activity.startActivity(Activity.java:2933) 05-14 17:13:42.853: E/AndroidRuntime(29217): at com.ssbs.sw.IR.view.MainActivity$1$1.onMenuItemClick(MainActivity.java:58) 05-14 17:13:42.853: E/AndroidRuntime(29217): at com.ssbs.sw.SWE.actionbarV5.menu.MenuButtonHelper$1.onClick(MenuButtonHelper.java:108) 05-14 17:13:42.853: E/AndroidRuntime(29217): at android.view.View.performClick(View.java:2492) 05-14 17:13:42.853: E/AndroidRuntime(29217): at android.view.View$PerformClick.run(View.java:9087) 05-14 17:13:42.853: E/AndroidRuntime(29217): at android.os.Handler.handleCallback(Handler.java:587) 05-14 17:13:42.853: E/AndroidRuntime(29217): at android.os.Handler.dispatchMessage(Handler.java:92) 05-14 17:13:42.853: E/AndroidRuntime(29217): at android.os.Looper.loop(Looper.java:130) 05-14 17:13:42.853: E/AndroidRuntime(29217): at android.app.ActivityThread.main(ActivityThread.java:3740) 05-14 17:13:42.853: E/AndroidRuntime(29217): at java.lang.reflect.Method.invokeNative(Native Method) 05-14 17:13:42.853: E/AndroidRuntime(29217): at java.lang.reflect.Method.invoke(Method.java:507) 05-14 17:13:42.853: E/AndroidRuntime(29217): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:880) 05-14 17:13:42.853: E/AndroidRuntime(29217): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:638) 05-14 17:13:42.853: E/AndroidRuntime(29217): at dalvik.system.NativeStart.main(Native Method)
This is my manifest from the library project:
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> <uses-permission android:name="android.permission.CAMERA" /> <uses-feature android:name="android.hardware.camera" /> <uses-feature android:name="android.hardware.camera.autofocus" /> <uses-sdk android:minSdkVersion="8" android:targetSdkVersion="16" /> <application android:icon="@drawable/ic_launcher" android:label="@string/app_name" > <activity android:name=".activity.CameraActivity" android:exported="true" > <intent-filter> <action android:name="isr.LAUNCH" /> <category android:name="android.intent.category.DEFAULT" /> </intent-filter> </activity> </application>
How can i fix this?
EDIT
My main project manifest permissions are:
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> <uses-permission android:name="android.permission.INTERNET" /> <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" /> <uses-permission android:name="android.permission.CHANGE_WIFI_STATE" /> <uses-permission android:name="android.permission.READ_PHONE_STATE" /> <uses-permission android:name="android.permission.VIBRATE" /> <uses-permission android:name="android.permission.GET_TASKS" /> <uses-permission android:name="android.permission.CAMERA" /> <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" /> <uses-permission android:name="android.permission.BLUETOOTH" /> <uses-permission android:name="com.android.launcher.permission.INSTALL_SHORTCUT" /> <uses-sdk android:minSdkVersion="8" android:targetSdkVersion="15" />
EDIT 2
I solved my problem by running the definition of my active application in the activity declaration (but I would like to know if I can do this without adding this definition):
<activity android:name="com.ISR.activity.CameraActivity"> <intent-filter> <action android:name="isr.LAUNCH" /> <category android:name="android.intent.category.DEFAULT" /> </intent-filter> </activity>
And now I can start my activity with the following code:
Intent intent = new Intent("isr.LAUNCH"); startActivity(intent);
source share