I'm trying to send an intent from app A to app B. In the activity of app A I do the following:
Intent i = new Intent();
i.setAction("com.example.test2.REQUEST_RESPONSE");
i.putExtra("info", "bla bla bla");
startActivityForResult(i, 0);
In app B I have the following activity in the manifest:
<activity android:name=".Receiving"
android:label="@string/app_name"
android:exported="false" >
<intent-filter>
<action android:name="com.example.test2.REQUEST_RESPONSE" />
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
</activity>
and this in the activity's onCreate:
Intent intent = getIntent();
if (intent.getAction().equals("com.example.test2.REQUEST_RESPONSE")) {
Log.e("Received", "Intent received thank you!");
}
With this I receive the following error:
01-18 12:30:44.950: E/AndroidRuntime(31200): FATAL EXCEPTION: main
01-18 12:30:44.950: E/AndroidRuntime(31200): java.lang.RuntimeException: Unable to resume activity {com.example.test/com.example.test.MainActivity}: java.lang.SecurityException: Permission Denial: starting Intent { act=example.test2.REQUEST_RESPONSE cmp=example.test2/.Receiving (has extras) } from ProcessRecord{41ae02d8 31200:com.example.test/u0a10107} (pid=31200, uid=10107) not exported from uid 10115
01-18 12:30:44.950: E/AndroidRuntime(31200): at android.app.ActivityThread.performResumeActivity(ActivityThread.java:2742)
01-18 12:30:44.950: E/AndroidRuntime(31200): at android.app.ActivityThread.handleResumeActivity(ActivityThread.java:2771)
01-18 12:30:44.950: E/AndroidRuntime(31200): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2235)
01-18 12:30:44.950: E/AndroidRuntime(31200): at android.app.ActivityThread.access$600(ActivityThread.java:141)
01-18 12:30:44.950: E/AndroidRuntime(31200): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1234)
01-18 12:30:44.950: E/AndroidRuntime(31200): at android.os.Handler.dispatchMessage(Handler.java:99)
01-18 12:30:44.950: E/AndroidRuntime(31200): at android.os.Looper.loop(Looper.java:137)
01-18 12:30:44.950: E/AndroidRuntime(31200): at android.app.ActivityThread.main(ActivityThread.java:5039)
01-18 12:30:44.950: E/AndroidRuntime(31200): at java.lang.reflect.Method.invokeNative(Native Method)
01-18 12:30:44.950: E/AndroidRuntime(31200): at java.lang.reflect.Method.invoke(Method.java:511)
01-18 12:30:44.950: E/AndroidRuntime(31200): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:793)
01-18 12:30:44.950: E/AndroidRuntime(31200): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:560)
01-18 12:30:44.950: E/AndroidRuntime(31200): at dalvik.system.NativeStart.main(Native Method)
01-18 12:30:44.950: E/AndroidRuntime(31200): Caused by: java.lang.SecurityException: Permission Denial: starting Intent { act=com.example.test2.REQUEST_RESPONSE cmp=com.example.test2/.Receiving (has extras) } from ProcessRecord{41ae02d8 31200:com.example.test/u0a10107} (pid=31200, uid=10107) not exported from uid 10115
01-18 12:30:44.950: E/AndroidRuntime(31200): at android.os.Parcel.readException(Parcel.java:1425)
01-18 12:30:44.950: E/AndroidRuntime(31200): at android.os.Parcel.readException(Parcel.java:1379)
01-18 12:30:44.950: E/AndroidRuntime(31200): at android.app.ActivityManagerProxy.startActivity(ActivityManagerNative.java:1870)
01-18 12:30:44.950: E/AndroidRuntime(31200): at android.app.Instrumentation.execStartActivity(Instrumentation.java:1412)
01-18 12:30:44.950: E/AndroidRuntime(31200): at android.app.Activity.startActivityForResult(Activity.java:3370)
01-18 12:30:44.950: E/AndroidRuntime(31200): at android.app.Activity.startActivityForResult(Activity.java:3331)
01-18 12:30:44.950: E/AndroidRuntime(31200): at com.example.test.MainActivity.onResume(MainActivity.java:125)
01-18 12:30:44.950: E/AndroidRuntime(31200): at android.app.Instrumentation.callActivityOnResume(Instrumentation.java:1185)
01-18 12:30:44.950: E/AndroidRuntime(31200): at android.app.Activity.performResume(Activity.java:5182)
01-18 12:30:44.950: E/AndroidRuntime(31200): at android.app.ActivityThread.performResumeActivity(ActivityThread.java:2732)
01-18 12:30:44.950: E/AndroidRuntime(31200): ... 12 more
If I remove the category from the intent filter I get this error instead:
01-18 12:21:03.059: E/AndroidRuntime(30865): Caused by: android.content.ActivityNotFoundException: No Activity found to handle Intent { act=com.example.test2.REQUEST_RESPONSE (has extras) }
Any ideas?
Change Activity Manifest Tag as below so that it opens the Second App.
<activity android:name=".Receiving"
android:label="@string/app_name"
android:exported="true" >
<intent-filter>
<action android:name="com.example.test2.REQUEST_RESPONSE" />
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
</activity>
The reason it is Crashing is because you set android:exported="false"
which mean that other process cannot access this Activity. So you set it to true and do the same it will not crash.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With