【问题标题】:Uninstalling applications in Flutter在 Flutter 中卸载应用程序
【发布时间】:2022-06-22 22:00:07
【问题描述】:

在我们的应用程序中,我们正在卸载一些第三方应用程序并使用app_uninstallerflutter(2.5.3) 插件来执行此操作。根据crashlytics,这个插件的崩溃事件数量最多,影响了 486 个崩溃事件中的 206 个用户(昨天的数据)。有没有其他方法可以卸载应用程序?应用卸载代码:

var isUninstalled = await AppUninstaller.Uninstall("com.package_name");

这是我们得到的例外:

Fatal Exception: kotlin.NotImplementedError: An operation is not implemented: Not yet implemented
   at com.frendyapp.app_uninstaller.AppUninstallerPlugin.onDetachedFromActivity(AppUninstallerPlugin.kt:80)
   at io.flutter.embedding.engine.FlutterEngineConnectionRegistry.detachFromActivity(FlutterEngineConnectionRegistry.java:389)
   at io.flutter.embedding.android.FlutterActivityAndFragmentDelegate.onDetach(FlutterActivityAndFragmentDelegate.java:632)
   at io.flutter.embedding.android.FlutterActivity.release(FlutterActivity.java:622)
   at io.flutter.embedding.android.FlutterActivity.onDestroy(FlutterActivity.java:643)
   at android.app.Activity.performDestroy(Activity.java:7460)
   at android.app.Instrumentation.callActivityOnDestroy(Instrumentation.java:1250)
   at android.app.ActivityThread.performDestroyActivity(ActivityThread.java:4655)
   at android.app.ActivityThread.handleDestroyActivity(ActivityThread.java:4686)
   at android.app.ActivityThread.-wrap5()
   at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1807)
   at android.os.Handler.dispatchMessage(Handler.java:106)
   at android.os.Looper.loop(Looper.java:200)
   at android.app.ActivityThread.main(ActivityThread.java:6971)
   at java.lang.reflect.Method.invoke(Method.java)
   at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:524)
   at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:858)

【问题讨论】:

    标签: android flutter dart flutter-layout flutter-dependencies


    【解决方案1】:

    我所做的是完全删除卸载程序插件并使用MethodChannel调用原生android端。

    在本机方面,我正在使用 Intent 卸载应用程序。请检查以下代码以供参考:

    Flutter Side:

    const platform = MethodChannel('com.flutter.uninstall');
    String package = 'com.package.name';
    
    var uninstallResult = await platform.invokeMethod("Uninstall", {
      "package": package,
    });
    

    原生 Android 端:

    private val CHANNEL_UNINSTALL = "com.flutter.uninstall"
    
    
    MethodChannel(flutterEngine.dartExecutor, CHANNEL_UNINSTALL).setMethodCallHandler { call, result ->
      if (call.method == "Uninstall") {
        val packageName = call.argument<String>("package")
        Log.e("Package Name", "$packageName")
    
        val intent = Intent(Intent.ACTION_UNINSTALL_PACKAGE)
        intent.data = Uri.parse("package:$packageName")
        intent.putExtra(Intent.EXTRA_RETURN_RESULT, true)
        result.success("uninstall_started")
      }
    }
    

    【讨论】:

      猜你喜欢
      • 2021-03-02
      • 2020-06-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-05-09
      • 2021-03-28
      • 2015-05-01
      • 2012-03-24
      相关资源
      最近更新 更多