Android中啓動,分享,卸載應用程序

一、啓動一個程序

private void startApp() {      
     // 創建PackageManager對象
     PackageManager pm = getPackageManager();
     try {
          /*
          * flag的作用:標識加載清單文件中的那部分內容,默認不會加載application節點下的內容。
          * google工程師這樣做是爲了提升加載的效率,一般我們想獲取PackageInfo的信息,大多數獲取包名,版本信息等。---懶加載
          * 一個應用程序中有很多activity節點,如果需要加載activity節點信息,則需要顯示的指明。
          */
          PackageInfo infos = pm.getPackageInfo(appInfo.getPackageName(), PackageManager.GET_ACTIVITIES);
          ActivityInfo[] activities = infos.activities;
          if (activities != null && activities.length > 0) {               //activities有可能爲空,有的應用程序沒有activity,比如服務,廣播。
               ActivityInfo activityInfo = activities[0];               //一般activities[0]表示啓動activity
               String className = activityInfo.name;
              
               Intent intent = new Intent();                         //啓動應用程序
               intent.setClassName(appInfo.getPackageName(), className);
               startActivity(intent);
          } else {
               Toast.makeText(getApplicationContext(), "親,不能啓動該系統程序", Toast.LENGTH_SHORT).show();
          }

     } catch (NameNotFoundException e) {
          e.printStackTrace();
     }
}



 

二、分享應用程序
只要配置了該intent-filter的應用都會接受到該請求。如果其他程序發送分享請求時,想讓自己的程序也獲得請求,則需要創建一個Activity,並設置動作和數據類型

private void shareApp() {
    
     Intent intent = new Intent();
     intent.setAction("android.intent.action.SEND");
     intent.addCategory("android.intent.category.DEFAULT");
     intent.setType("text/plain");                         //發送的類型
     intent.putExtra(Intent.EXTRA_TEXT, "親,強烈推薦使用" + appInfo.getApp_name() + "軟件,下載地址:http://google.play.com");
     startActivity(intent);
}


三、卸載應用程序
private void uninstallApp() {

     Intent intent = new Intent();
     intent.setAction("android.intent.action.DELETE");
     intent.addCategory("android.intent.category.DEFAULT");
     intent.setData(Uri.parse("package:" + appInfo.getPackageName()));
     startActivityForResult(intent, 0);
}


卸載程序後需要刷新listview顯示內容,可以在代碼中註冊一個廣播,用於接受程序卸載完成後系統發送的廣播。
private void regesterUninstallReceiver() {

     UninstallReceiver uninstallReceiver = new UninstallReceiver();
     IntentFilter filter = new IntentFilter();
     filter.addAction("android.intent.action.PACKAGE_REMOVED");       //當應用程序被卸載完成後,系統發出的廣播動作
     filter.addDataScheme("package");                                 //android4.0以後需要添加該類型
     registerReceiver(uninstallReceiver, filter);
}

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章