android - How to get the package name of an application and then launch that app using Intent? -


i developing android app. in app, there button go activity contains list of installed apps on phone. when user selects app, package name saved , user returns previous activity. but, how can package name?

public class loadercustomsupport extends sherlockfragmentactivity {      @override     protected void oncreate(bundle savedinstancestate) {         super.oncreate(savedinstancestate);          fragmentmanager fm = getsupportfragmentmanager();          // create list fragment , add our sole content.         if (fm.findfragmentbyid(android.r.id.content) == null) {             applistfragment list = new applistfragment();             fm.begintransaction().add(android.r.id.content, list).commit();         }     }      /**      * class holds per-item data in our loader.      */     public static class appentry {         public appentry(applistloader loader, applicationinfo info) {             mloader = loader;             minfo = info;             mapkfile = new file(info.sourcedir);         }          public applicationinfo getapplicationinfo() {             return minfo;         }          public string getlabel() {             return mlabel;         }          public drawable geticon() {             if (micon == null) {                 if (mapkfile.exists()) {                     micon = minfo.loadicon(mloader.mpm);                     return micon;                 } else {                     mmounted = false;                 }             } else if (!mmounted) {                 // if app wasn't mounted mounted, reload                 // icon.                 if (mapkfile.exists()) {                     mmounted = true;                     micon = minfo.loadicon(mloader.mpm);                     return micon;                 }             } else {                 return micon;             }              return mloader.getcontext().getresources().getdrawable(                 android.r.drawable.sym_def_app_icon);         }          @override         public string tostring() {             return mlabel;         }          void loadlabel(context context) {             if (mlabel == null || !mmounted) {                 if (!mapkfile.exists()) {                     mmounted = false;                     mlabel = minfo.packagename;                 } else {                     mmounted = true;                     charsequence label = minfo.loadlabel(context.getpackagemanager());                     mlabel = label != null ? label.tostring() : minfo.packagename;                 }             }         }          private final applistloader mloader;         private final applicationinfo minfo;         private final file mapkfile;         private string mlabel;         private drawable micon;         private boolean mmounted;     }      /**      * perform alphabetical comparison of application entry objects.      */     public static final comparator<appentry> alpha_comparator = new comparator<appentry>() {         private final collator scollator = collator.getinstance();          @override         public int compare(appentry object1, appentry object2) {             return scollator.compare(object1.getlabel(), object2.getlabel());         }     };      /**      * helper determining if configuration has changed in interesting      * way need rebuild app list.      */     public static class interestingconfigchanges {         final configuration mlastconfiguration = new configuration();         int mlastdensity;          boolean applynewconfig(resources res) {             int configchanges = mlastconfiguration.updatefrom(res.getconfiguration());             boolean densitychanged = mlastdensity != res.getdisplaymetrics().densitydpi;             if (densitychanged || (configchanges&(activityinfo.config_locale                     |activityinfocompat.config_ui_mode|activityinfo.config_screen_layout)) != 0) {                 mlastdensity = res.getdisplaymetrics().densitydpi;                 return true;             }             return false;         }     }      /**      * helper class interesting changes installed apps      * loader can updated.      */     public static class packageintentreceiver extends broadcastreceiver {         final applistloader mloader;          public packageintentreceiver(applistloader loader) {             mloader = loader;             intentfilter filter = new intentfilter(intent.action_package_added);             filter.addaction(intent.action_package_removed);             filter.addaction(intent.action_package_changed);             filter.adddatascheme("package");             mloader.getcontext().registerreceiver(this, filter);             // register events related sdcard installation.             intentfilter sdfilter = new intentfilter();             sdfilter.addaction(intentcompat.action_external_applications_available);             sdfilter.addaction(intentcompat.action_external_applications_unavailable);             mloader.getcontext().registerreceiver(this, sdfilter);         }          @override         public void onreceive(context context, intent intent) {             // tell loader change.             mloader.oncontentchanged();         }     }      /**      * custom loader loads of installed applications.      */     public static class applistloader extends asynctaskloader<list<appentry>> {         final interestingconfigchanges mlastconfig = new interestingconfigchanges();         final packagemanager mpm;          list<appentry> mapps;         packageintentreceiver mpackageobserver;          public applistloader(context context) {             super(context);              // retrieve package manager later use; note don't             // use 'context' directly instead save global application             // context returned getcontext().             mpm = getcontext().getpackagemanager();         }          /**          * bulk of our work done.  function          * called in background thread , should generate new set of          * data published loader.          */         @override         public list<appentry> loadinbackground() {             // retrieve known applications.             list<applicationinfo> apps = mpm.getinstalledapplications(                 packagemanager.get_uninstalled_packages |                 packagemanager.get_disabled_components);             if (apps == null) {                 apps = new arraylist<applicationinfo>();             }              final context context = getcontext();              // create corresponding array of entries , load labels.             list<appentry> entries = new arraylist<appentry>(apps.size());             (int i=0; i<apps.size(); i++) {                 appentry entry = new appentry(this, apps.get(i));                 entry.loadlabel(context);                 entries.add(entry);             }              // sort list.             collections.sort(entries, alpha_comparator);              // done!             return entries;         }          /**          * called when there new data deliver client.           * super class take care of delivering it; implementation          * here adds little more logic.          */         @override         public void deliverresult(list<appentry> apps) {             if (isreset()) {                 // async query came in while loader stopped.                  // don't need result.                 if (apps != null) {                     onreleaseresources(apps);                 }             }             list<appentry> oldapps = apps;             mapps = apps;              if (isstarted()) {                 // if loader started, can                 // deliver results.                 super.deliverresult(apps);             }              // @ point can release resources associated             // 'oldapps' if needed; new result delivered             // know no longer in use.             if (oldapps != null) {                 onreleaseresources(oldapps);             }         }          /**          * handles request start loader.          */         @override         protected void onstartloading() {             if (mapps != null) {                 // if have result available, deliver                 // immediately.                 deliverresult(mapps);             }              // start watching changes in app data.             if (mpackageobserver == null) {                 mpackageobserver = new packageintentreceiver(this);             }              // has interesting in configuration changed since             // last built app list?             boolean configchange = mlastconfig.applynewconfig(getcontext().getresources());              if (takecontentchanged() || mapps == null || configchange) {                 // if data has changed since last time loaded                 // or not available, start load.                 forceload();             }        }          /**          * handles request stop loader.          */         @override         protected void onstoploading() {             // attempt cancel current load task if possible.             cancelload();         }          /**          * handles request cancel load.          */         @override         public void oncanceled(list<appentry> apps) {             super.oncanceled(apps);              // @ point can release resources associated 'apps'             // if needed.             onreleaseresources(apps);         }          /**          * handles request reset loader.          */         @override         protected void onreset() {             super.onreset();              // ensure loader stopped             onstoploading();              // @ point can release resources associated 'apps'             // if needed.             if (mapps != null) {                 onreleaseresources(mapps);                 mapps = null;             }              // stop monitoring changes.             if (mpackageobserver != null) {                 getcontext().unregisterreceiver(mpackageobserver);                 mpackageobserver = null;             }         }          /**          * helper function take care of releasing resources associated          * actively loaded data set.          */         protected void onreleaseresources(list<appentry> apps) {             // simple list<> there nothing do.              // cursor, close here.         }     }      public static class applistadapter extends arrayadapter<appentry> {         private final layoutinflater minflater;          public applistadapter(context context) {             super(context, android.r.layout.simple_list_item_2);             minflater = (layoutinflater)context.getsystemservice(context.layout_inflater_service);         }          public void setdata(list<appentry> data) {             clear();             if (data != null) {                 (appentry appentry : data) {                     add(appentry);                 }             }         }          /**          * populate new items in list.          */         @override         public view getview(int position, view convertview, viewgroup parent) {             view view;              if (convertview == null) {                 view = minflater.inflate(r.layout.list_item_icon_text, parent, false);             } else {                 view = convertview;             }              appentry item = getitem(position);             ((imageview)view.findviewbyid(r.id.icon)).setimagedrawable(item.geticon());             ((textview)view.findviewbyid(r.id.text)).settext(item.getlabel());              return view;         }     }      public static class applistfragment extends sherlocklistfragment             implements loadermanager.loadercallbacks<list<appentry>> {          // adapter being used display list's data.         applistadapter madapter;          // if non-null, current filter user has provided.         string mcurfilter;          onquerytextlistenercompat monquerytextlistenercompat;          @override         public void onactivitycreated(bundle savedinstancestate) {             super.onactivitycreated(savedinstancestate);              // give text display if there no data.  in real             // application come resource.             setemptytext("no applications");              // have menu item show in action bar.             sethasoptionsmenu(true);              // create empty adapter use display loaded data.             madapter = new applistadapter(getactivity());             setlistadapter(madapter);              // start out progress indicator.             setlistshown(false);              // prepare loader.  either re-connect existing one,             // or start new one.             getloadermanager().initloader(0, null, this);         }          @override         public void oncreateoptionsmenu(menu menu, menuinflater inflater) {             // place action bar item searching.             menuitem item = menu.add("search");             item.seticon(android.r.drawable.ic_menu_search);             item.setshowasaction(menuitem.show_as_action_if_room);             view searchview = searchviewcompat.newsearchview(getactivity());             if (searchview != null) {                 searchviewcompat.setonquerytextlistener(searchview,                         new onquerytextlistenercompat() {                     @override                     public boolean onquerytextchange(string newtext) {                         // called when action bar search text has changed.  since                         // simple array adapter, can have filtering.                         mcurfilter = !textutils.isempty(newtext) ? newtext : null;                         madapter.getfilter().filter(mcurfilter);                         return true;                     }                 });                 item.setactionview(searchview);             }         }          @override         public void onlistitemclick(listview l, view v, int position, long id) {             // insert desired behavior here.             log.i("loadercustom", "item clicked: " + id);            //here want know package name of selected app item in list         }          @override         public loader<list<appentry>> oncreateloader(int id, bundle args) {             // called when new loader needs created.              // sample has 1 loader no arguments, simple.             return new applistloader(getactivity());         }          @override         public void onloadfinished(loader<list<appentry>> loader, list<appentry> data) {             // set new data in adapter.             madapter.setdata(data);              // list should shown.             if (isresumed()) {                 setlistshown(true);             } else {                 setlistshownnoanimation(true);             }         }          @override         public void onloaderreset(loader<list<appentry>> loader) {             // clear data in adapter.             madapter.setdata(null);         }     } } 

here code:

final packagemanager pm = getpackagemanager(); //get list of installed apps. list<applicationinfo> packages = pm.getinstalledapplications(packagemanager.get_meta_data);  (applicationinfo packageinfo : packages) {     log.d(tag, "installed package :" + packageinfo.packagename);     log.d(tag, "launch activity :" + pm.getlaunchintentforpackage(packageinfo.packagename));  } 

Comments

Popular posts from this blog

python - How to create a legend for 3D bar in matplotlib? -

java - Multi-Label Document Classification -

php - Dynamic url re-writing using htaccess -