2014-01-22 4 views
0

У меня есть два приложения App1 и App2 я хочу, чтобы открыть Третью деятельность App2 «s из App1 и я хочу передать некоторые значения между приложениями тоже. Как я могу это сделать.?Открытие Второго AAPP Удельная активность

Я попытался это:

Intent LaunchIntent = getPackageManager().getLaunchIntentForPackage("com.example.aap2.MainActivity3"); 
startActivity(LaunchIntent); 

Но я получаю исключение.

01-23 00:18:04.150: E/AndroidRuntime(5323): java.lang.IllegalStateException: Could not execute method of the activity 
01-23 00:18:04.150: E/AndroidRuntime(5323):  at android.view.View$1.onClick(View.java:2144) 
01-23 00:18:04.150: E/AndroidRuntime(5323):  at android.view.View.performClick(View.java:2485) 
01-23 00:18:04.150: E/AndroidRuntime(5323):  at android.view.View$PerformClick.run(View.java:9080) 
01-23 00:18:04.150: E/AndroidRuntime(5323):  at android.os.Handler.handleCallback(Handler.java:587) 
01-23 00:18:04.150: E/AndroidRuntime(5323):  at android.os.Handler.dispatchMessage(Handler.java:92) 
01-23 00:18:04.150: E/AndroidRuntime(5323):  at android.os.Looper.loop(Looper.java:130) 
01-23 00:18:04.150: E/AndroidRuntime(5323):  at android.app.ActivityThread.main(ActivityThread.java:3714) 
01-23 00:18:04.150: E/AndroidRuntime(5323):  at java.lang.reflect.Method.invokeNative(Native Method) 
01-23 00:18:04.150: E/AndroidRuntime(5323):  at java.lang.reflect.Method.invoke(Method.java:507) 
01-23 00:18:04.150: E/AndroidRuntime(5323):  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:866) 
01-23 00:18:04.150: E/AndroidRuntime(5323):  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:624) 
01-23 00:18:04.150: E/AndroidRuntime(5323):  at dalvik.system.NativeStart.main(Native Method) 
01-23 00:18:04.150: E/AndroidRuntime(5323): Caused by: java.lang.reflect.InvocationTargetException 
01-23 00:18:04.150: E/AndroidRuntime(5323):  at java.lang.reflect.Method.invokeNative(Native Method) 
01-23 00:18:04.150: E/AndroidRuntime(5323):  at java.lang.reflect.Method.invoke(Method.java:507) 
01-23 00:18:04.150: E/AndroidRuntime(5323):  at android.view.View$1.onClick(View.java:2139) 
01-23 00:18:04.150: E/AndroidRuntime(5323):  ... 11 more 
01-23 00:18:04.150: E/AndroidRuntime(5323): Caused by: java.lang.NullPointerException 
01-23 00:18:04.150: E/AndroidRuntime(5323):  at android.app.Instrumentation.execStartActivity(Instrumentation.java:1374) 
01-23 00:18:04.150: E/AndroidRuntime(5323):  at android.app.Activity.startActivityForResult(Activity.java:2827) 
01-23 00:18:04.150: E/AndroidRuntime(5323):  at android.app.Activity.startActivity(Activity.java:2933) 
01-23 00:18:04.150: E/AndroidRuntime(5323):  at com.example.aap1.MainActivity1.one(MainActivity1.java:27) 
+0

Пожалуйста, запишите свои журналы с вашим вопросом. – Vigbyor

+0

Я добавил журнал исключений – Comrade

ответ

3

Проблемы здесь

Intent LaunchIntent = getPackageManager().getLaunchIntentForPackage("com.example.aap2.MainActivity3"); 

здесь вы должны пройти packagename но вы передаете Activity имени .. что тоже выше будет возвращено действие запуска, которое вы установили в файле манифеста.

Для этого вам необходимо изменить свой код как это ..

Intent i = new Intent(); 
i.setClassName("com.example.aap2", "com.example.aap2.MainActivity3"); 
i.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 
startActivity(i); 

И установить android:export="true" для MainActivity3 в манифесте.

2

Использование

Intent intent = new Intent(); 
intent.setComponent(new ComponentName("com.example.app2", "com.example.aap2.MainActivity3")); 
//intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); // Make sure this falg is really need. 
startActivity(intent); 

Полезные ресурсы

  1. Allowing Other Apps to Start Your Activity
  2. Interacting with Other Apps

Вы должны написать заявление активности в манифест, как (для второго приложения)

<activity android:name=".MainActivity3" 
     android:label="@string/app_name" 
     android:exported="true" > 
     // Add intent filter if any. 
</activity> 
+0

снова Im получение исключения. Должен ли я добавлять что-либо к манифестации, кроме действий? 01-23 00: 37: 09.670: E/AndroidRuntime (5518): вызвано: java.lang.SecurityException: отказ от разрешения: начало Intent {flg = 0x10000000 cmp = com.example.aap2/.MainActivity3} из ProcessRecord {408dbff8 5518 : com.example.aap1/10045} (pid = 5518, uid = 10045) требует null – Comrade

+0

@Reshmy Проверьте объявление активности вашего второго приложения. Убедитесь, что вы создали 'android: exported =" true "'. –

+0

Я получил его от Второго ответа. Большое вам спасибо за вашу поддержку. – Comrade

1

Используйте это, только если вы не знаете активность Имя и не передать имя активности в нем, как вы сделали

Intent LaunchIntent = getPackageManager().getLaunchIntentForPackage("com.example.aap2"); 

В противном случае просто попробуйте следующий метод, обычный метод, чтобы открыть другой деятельность

Intent intent = new Intent(Intent.ACTION_MAIN); 
intent.setComponent(new ComponentName("com.package.address","com.package.address.MainActivity")); 
startActivity(intent); 
Смежные вопросы