kim.sardine
kim.sardine

Reputation: 81

How "Quick shortcut maker" and "App shortcut maker" work?

I found some cool apps on play store.

These apps find every activities in my every installed apps.

When I click activity, it just run directly.

How could it possible?

Can we figure out any activities in any app?

and is it possible to run any activities by other app? even if that activity has no intent-filter in manifest file?

Screen shot - Quick shortcut maker

and I'd appreciate it if add some sample code.

Upvotes: 1

Views: 2194

Answers (1)

phatnhse
phatnhse

Reputation: 3920

First get all ActivityInfo of install activities in your device.

 public List<ActivityInfo> getAllRunningActivities(Context context) {
    List<ActivityInfo> result = new ArrayList<>();

    List<ApplicationInfo> packages = context.getPackageManager()
            .getInstalledApplications(PackageManager.GET_META_DATA);

    for (ApplicationInfo applicationInfo : packages) {
        Log.d(TAG, "getAllRunningActivities: " + applicationInfo.packageName);
        try {
            PackageInfo pi = context.getPackageManager().getPackageInfo(
                    applicationInfo.packageName, PackageManager.GET_ACTIVITIES);
            Collections.addAll(result, pi.activities);
        } catch (PackageManager.NameNotFoundException e) {
            e.printStackTrace();
        } catch (NullPointerException e) {
            e.printStackTrace();
        }
    }

    return result;
}

Then startActivity() by using that info.

for (ActivityInfo activityInfo : getAllRunningActivities(this)) {
        Log.d(TAG, "onCreate: " + activityInfo.toString());
        if (yourCondition && filterResult) {
            Intent intent = new Intent();
            intent.setClassName(activityInfo.applicationInfo.packageName, activityInfo.name);
            startActivity(intent);
        }
    }

Upvotes: 1

Related Questions