问题描述:

I currently have created an engine which accepts voice as input and then converts it to a string.

Now I wanted to add an option where the voice commands will specify an app name and I will open it.

For example my voice input was - 'open facebook' then this gets converted into a String.

Now I am trying to make the application launch 'facebook'.

I know that this can be done by using a few methods out of PackageManager, but I am not sure how.

The current methods suggest making a listview which is not practical for my application.

Even a small snippet would be very helpful. Thanks in Advance.

网友答案:

Have a look in the answers here. You can get a list with all of the installed apps in the device. Search in the list for the name of the app you need. In that way you got both the name and the package available!

class PInfo {
    private String appname = "";
    private String pname = "";
    private String versionName = "";
    private int versionCode = 0;
    private Drawable icon;
    private void prettyPrint() {
        Log.v(appname + "\t" + pname + "\t" + versionName + "\t" + versionCode);
    }
}


private ArrayList<PInfo> getPackages() {
    ArrayList<PInfo> apps = getInstalledApps(false); /* false = no system packages */
    final int max = apps.size();
    for (int i=0; i<max; i++) {
        apps.get(i).prettyPrint();
    }
    return apps;
}


private ArrayList<PInfo> getInstalledApps(boolean getSysPackages) {
    ArrayList<PInfo> res = new ArrayList<PInfo>();        
    List<PackageInfo> packs = getPackageManager().getInstalledPackages(0);
    for(int i=0;i<packs.size();i++) {
        PackageInfo p = packs.get(i);
        if ((!getSysPackages) && (p.versionName == null)) {
            continue ;
        }
        PInfo newInfo = new PInfo();
        newInfo.appname = p.applicationInfo.loadLabel(getPackageManager()).toString();
        newInfo.pname = p.packageName;
        newInfo.versionName = p.versionName;
        newInfo.versionCode = p.versionCode;
        newInfo.icon = p.applicationInfo.loadIcon(getPackageManager());
        res.add(newInfo);
    }
    return res; 
}
相关阅读:
Top