Launch an activity of an application from a different application on Android

ⅰ亾dé卋堺 提交于 2020-01-03 19:42:14

问题


I need to launch an activity (not the main activity) of an application from an application I have made. The activity I want to launch is proprietary, hence, I cannot make any changes to its code(or manifest).

For example: I want to launch somebody's Facebook profile from my own application. A normal intent to facebook from my app would open the 'newsfeed'(which I don't want). I want to know how to access any other activity. Thanks in advance!

The little code I have:

String PACKAGE="com.facebook.katana";
Intent launchIntent = getPackageManager()
                    .getLaunchIntentForPackage(PACKAGE);
startActivity(launchIntent);

回答1:


To launch specific activity you need to use explicit intent. Or use implicit intent with action if you know what action that activity answers to.

To use explicit intent you can do the following (provided you call it from the activity):

        Intent intent = new Intent();
        intent.setComponent(new ComponentName("com.package.name", "com.package.name.ActivityName"));
        if(getPackageManager().resolveActivity(intent, 0) != null) {
            startActivity(intent);
        } else {
            Toast.makeText(this, "No app installed that can perform this action", Toast.LENGTH_SHORT).show();
        }

You can also add flags to the intent, add actions and categories. As long as the intent can be resolved as viable intent by the PackageManager, it will launch the activity.

Now...

The question about facebook profile, is a different one.

Perhaps, the best way to achieve that would be to use intent with action VIEW and povide Intent.setData with uri to the profile page. That should also be checked for possibility of being resolved correctly. And then will launch the chooser of all supported activities to open it, which should include facebook application. It is then up to user to open the intent using Facebook app or launcher.



来源:https://stackoverflow.com/questions/37978753/launch-an-activity-of-an-application-from-a-different-application-on-android

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!