【问题标题】:How to detect wither the user has clicked OK or CANCEL on Intent.ACTION_DELETE?如何检测用户在 Intent.ACTION_DELETE 上单击了确定或取消?
【发布时间】:2018-01-21 11:19:20
【问题描述】:

我正在尝试制作一个卸载应用程序,这是我用来卸载应用程序的部分:

 Uri uri = Uri.fromParts("package", app.getPackageName(), null);
 Intent intent = new Intent(Intent.ACTION_DELETE, uri);
 startActivity(intent);

当用户单击卸载按钮时,会出现一个确认弹出对话框。有没有办法检查用户是否在对话框中单击了确定或取消?

【问题讨论】:

    标签: android android-intent uninstallation


    【解决方案1】:

    不直接,如ACTION_DELETE is not documented to return anything

    不过,当您的 Activity 返回到前台时,您可以使用 PackageManager 并查看应用是否仍然存在。

    【讨论】:

      【解决方案2】:

      别介意伙计们,我终于找到了解决方案:我使用 ACTION_UNINSTALL_PACKAGE(最低 API 14)代替 ACTION_DELETE,这是最终代码:

      private void uninstallApps(List<AppModel> apps) {
          for (AppModel app : apps) {
              Uri uri = Uri.fromParts("package", app.getPackageName(), null);
              Intent intent = new Intent(Intent.ACTION_UNINSTALL_PACKAGE, uri);
              // store result
              intent.putExtra(Intent.EXTRA_RETURN_RESULT, true);
              startActivityForResult(intent, 1);
          }
      }
      
      @Override
      public void onActivityResult(int requestCode, int resultCode, Intent data) {
          super.onActivityResult(requestCode, resultCode, data);
          // get result
          if(resultCode == RESULT_OK){
              Log.d(TAG, "onActivityResult: OK");
          }else if (resultCode == RESULT_CANCELED){
              Log.d(TAG, "onActivityResult: CANCEL");
          }
      }
      

      我希望这会对某人有所帮助。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-11-01
        • 2019-04-22
        • 2019-01-07
        • 1970-01-01
        • 1970-01-01
        • 2018-07-21
        相关资源
        最近更新 更多