6.4 程序管理器中的应用启动&卸载&分享

来源:互联网 发布:世界观庞大的小说 知乎 编辑:程序博客网 时间:2024/05/21 15:47
  /**
       * 卸载 app
       */
      public void  unistallApp(){
            Intent intent = new Intent();
            intent.setAction(Intent. ACTION_DELETE);
            intent.addCategory(Intent. CATEGORY_DEFAULT);
            intent.setData(Uri. parse("package:" + clickAppInfo.getPackName()));
            startActivityForResult(intent, 0);

      }

       //卸载之后告诉程序管理器界面重新填充数据,否则卸载之后的app还会出现在lv中
            
       // 方法1: onactivityResult
      @Override
      protected void onActivityResult( int requestCode, int resultCode, Intent data) {
            fillDateToLIst();
             super.onActivityResult(requestCode, resultCode, data);
      }



     // 方法2: 发送一条自定义广播
     < receiver android:name= "xxxx">
            <intent-filter >
               
                <action android:name= "android.intent.action.PACKAGE_REMOVED" />
            </intent-filter >
        </receiver >



//---------------------------------------------------------------------------------------


      
      
      
      /**
       * 分享应用: 激活系统短信应用
       */
      public void  shareApp(){
      
        /* <action android:name="android.intent.action.SEND" />
    <category android:name="android.intent.category.DEFAULT" />
    <data android:mimeType="image/*" />*/
            
            Intent intent= new Intent();
            intent.setAction( "android.intent.action.SEND");
            intent.addCategory( "android.intent.category.DEFAULT");
            intent.setType( "image/*");
            
        //分享内容
            intent.putExtra(intent. EXTRA_TEXT, "推荐一款软件:" +clickAppInfo .getAppName()+
                         ",下载网址是:" +"http://play.google.com/store/apps/details?id=" +clickAppInfo .getPackName());
   
          startActivity(intent);
      
      }

      


//---------------------------------------------------------------------------------------




      /**
       * 启动 App的方法: 意图开启应用的第一个activity
       */
      public void startApp(){
             // 查找当前应用程序里面的第一个activity. 激活他.
                        PackageManager pm = getPackageManager();
                         try {
                               //懒加载
                              PackageInfo packInfo = pm.getPackageInfo(
                                           clickAppInfo.getPackName(),  PackageManager.GET_ACTIVITIES );
                              ActivityInfo[] infos = packInfo.activities;
                               if (infos != null && infos. length > 0) {
                                    ActivityInfo activityInfo = infos[0];
                                    String className = activityInfo.name;
                                    Intent intent = new Intent();
                                    intent.setClassName( clickAppInfo.getPackName(), className);
                                    startActivity(intent);
                              } else {
                                    Toast. makeText(this, "没有找到入口activity", 0).show();
                              }

                        } catch (NameNotFoundException e) {
                              e.printStackTrace();
                              Toast. makeText(this, "无法启动该应用", 0).show();
                        }
            
      }



--------------------------------------------------------
问题:自己开启自己的时候出现重复加载相同的activity

指定软件管理的activity的启动模式为: singleTask     


 <!--软件管理的activity  -->
        <activity
            android:name= "com.itheima.mobilesafe.AppManagerActivity"
              android:theme= "@android:style/Theme.Light.NoTitleBar"
              android:launchMode= "singleTask"
            ></activity >




原创粉丝点击