Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to start activity in another application?

I have application A defined as below:

<application android:icon="@drawable/icon" android:label="@string/app_name">     <activity android:name="com.example.MyExampleActivity"               android:label="@string/app_name">         <intent-filter>             <action android:name="android.intent.action.MAIN" />             <category android:name="android.intent.category.LAUNCHER" />         </intent-filter>     </activity> </application> 

Now in application B, how can I write the code to start the activity in application A? Thanks!

like image 522
user256239 Avatar asked Feb 05 '10 18:02

user256239


People also ask

How do I start an activity from another application?

If both application have the same signature (meaning that both APPS are yours and signed with the same key), you can call your other app activity as follows: Intent LaunchIntent = getActivity(). getPackageManager(). getLaunchIntentForPackage(CALC_PACKAGE_NAME); startActivity(LaunchIntent);


2 Answers

If both application have the same signature (meaning that both APPS are yours and signed with the same key), you can call your other app activity as follows:

Intent LaunchIntent = getActivity().getPackageManager().getLaunchIntentForPackage(CALC_PACKAGE_NAME); startActivity(LaunchIntent); 

Hope it helps.

like image 20
azelez Avatar answered Sep 16 '22 11:09

azelez


If you guys are facing "Permission Denial: starting Intent..." error or if the app is getting crash without any reason during launching the app - Then use this single line code in Manifest

android:exported="true" 

Please be careful with finish(); , if you missed out it the app getting frozen. if its mentioned the app would be a smooth launcher.

finish(); 

The other solution only works for two activities that are in the same application. In my case, application B doesn't know class com.example.MyExampleActivity.class in the code, so compile will fail.

I searched on the web and found something like this below, and it works well.

Intent intent = new Intent(); intent.setComponent(new ComponentName("com.example", "com.example.MyExampleActivity")); startActivity(intent); 

You can also use the setClassName method:

Intent intent = new Intent(Intent.ACTION_MAIN); intent.setClassName("com.hotfoot.rapid.adani.wheeler.android", "com.hotfoot.rapid.adani.wheeler.android.view.activities.MainActivity"); startActivity(intent); finish(); 

You can also pass the values from one app to another app :

Intent launchIntent = getApplicationContext().getPackageManager().getLaunchIntentForPackage("com.hotfoot.rapid.adani.wheeler.android.LoginActivity"); if (launchIntent != null) {     launchIntent.putExtra("AppID", "MY-CHILD-APP1");     launchIntent.putExtra("UserID", "MY-APP");     launchIntent.putExtra("Password", "MY-PASSWORD");     startActivity(launchIntent);     finish(); } else {     Toast.makeText(getApplicationContext(), " launch Intent not available", Toast.LENGTH_SHORT).show(); } 
like image 192
user256239 Avatar answered Sep 19 '22 11:09

user256239