Giter VIP home page Giter VIP logo

capacitor-filesharer's People

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar

capacitor-filesharer's Issues

Android: BUILD FAILED in 9s after upgrade

After upgrading this happens in Android Studio when trying to generate the APK.

Executing tasks: [:app:bundleRelease]


> Configure project :app
google-services.json not found, google-services plugin not applied. Push Notifications won't work

> Configure project :capacitor-android
WARNING: API 'variant.getJavaCompiler()' is obsolete and has been replaced with 'variant.getJavaCompileProvider()'.
It will be removed at the end of 2019.
For more information, see https://d.android.com/r/tools/task-configuration-avoidance.
To determine what is calling variant.getJavaCompiler(), use -Pandroid.debug.obsoleteApi=true on the command line to display a stack trace.
WARNING: API 'variantOutput.getPackageLibrary()' is obsolete and has been replaced with 'variant.getPackageLibraryProvider()'.
It will be removed at the end of 2019.
For more information, see https://d.android.com/r/tools/task-configuration-avoidance.
To determine what is calling variantOutput.getPackageLibrary(), use -Pandroid.debug.obsoleteApi=true on the command line to display a stack trace.

> Task :app:preBuild UP-TO-DATE
> Task :byteowls-capacitor-filesharer:preBuild UP-TO-DATE
> Task :byteowls-capacitor-filesharer:preReleaseBuild UP-TO-DATE
> Task :byteowls-capacitor-filesharer:checkReleaseManifest
> Task :byteowls-capacitor-filesharer:processReleaseManifest
> Task :capacitor-android:preBuild UP-TO-DATE
> Task :capacitor-android:preReleaseBuild UP-TO-DATE
> Task :capacitor-android:checkReleaseManifest
> Task :capacitor-android:processReleaseManifest
> Task :capacitor-cordova-android-plugins:preBuild UP-TO-DATE
> Task :capacitor-cordova-android-plugins:preReleaseBuild UP-TO-DATE
> Task :capacitor-cordova-android-plugins:checkReleaseManifest
> Task :capacitor-cordova-android-plugins:processReleaseManifest
> Task :app:preReleaseBuild
> Task :byteowls-capacitor-filesharer:packageReleaseRenderscript NO-SOURCE
> Task :capacitor-cordova-android-plugins:packageReleaseRenderscript NO-SOURCE
> Task :app:compileReleaseRenderscript
> Task :app:generateReleaseResValues
> Task :app:generateReleaseResources
> Task :capacitor-android:packageReleaseRenderscript NO-SOURCE
> Task :byteowls-capacitor-filesharer:compileReleaseRenderscript
> Task :byteowls-capacitor-filesharer:generateReleaseResValues
> Task :byteowls-capacitor-filesharer:generateReleaseResources
> Task :byteowls-capacitor-filesharer:packageReleaseResources
> Task :capacitor-android:compileReleaseRenderscript
> Task :capacitor-android:generateReleaseResValues
> Task :capacitor-android:generateReleaseResources
> Task :capacitor-android:packageReleaseResources
> Task :capacitor-cordova-android-plugins:compileReleaseRenderscript
> Task :capacitor-cordova-android-plugins:generateReleaseResValues
> Task :capacitor-cordova-android-plugins:generateReleaseResources
> Task :capacitor-cordova-android-plugins:packageReleaseResources
> Task :app:mergeReleaseResources
> Task :app:checkReleaseManifest
> Task :app:createReleaseCompatibleScreenManifests
> Task :app:mainApkListPersistenceRelease
> Task :app:processReleaseManifest
> Task :app:bundleReleaseResources
> Task :app:mergeReleaseShaders
> Task :app:compileReleaseShaders
> Task :app:generateReleaseAssets
> Task :byteowls-capacitor-filesharer:mergeReleaseShaders
> Task :byteowls-capacitor-filesharer:compileReleaseShaders
> Task :byteowls-capacitor-filesharer:generateReleaseAssets
> Task :byteowls-capacitor-filesharer:packageReleaseAssets
> Task :capacitor-android:mergeReleaseShaders
> Task :capacitor-android:compileReleaseShaders
> Task :capacitor-android:generateReleaseAssets
> Task :capacitor-android:packageReleaseAssets
> Task :capacitor-cordova-android-plugins:mergeReleaseShaders
> Task :capacitor-cordova-android-plugins:compileReleaseShaders
> Task :capacitor-cordova-android-plugins:generateReleaseAssets
> Task :capacitor-cordova-android-plugins:packageReleaseAssets
> Task :app:mergeReleaseAssets
> Task :capacitor-android:compileReleaseAidl NO-SOURCE
> Task :byteowls-capacitor-filesharer:compileReleaseAidl NO-SOURCE
> Task :capacitor-cordova-android-plugins:compileReleaseAidl NO-SOURCE
> Task :app:compileReleaseAidl NO-SOURCE
> Task :app:generateReleaseBuildConfig
> Task :app:prepareLintJar UP-TO-DATE
> Task :app:generateReleaseSources
> Task :byteowls-capacitor-filesharer:generateReleaseBuildConfig
> Task :capacitor-android:generateReleaseRFile
> Task :byteowls-capacitor-filesharer:generateReleaseRFile
> Task :byteowls-capacitor-filesharer:prepareLintJar UP-TO-DATE
> Task :byteowls-capacitor-filesharer:generateReleaseSources
> Task :capacitor-android:generateReleaseBuildConfig
> Task :capacitor-android:prepareLintJar UP-TO-DATE
> Task :capacitor-android:generateReleaseSources
> Task :capacitor-android:javaPreCompileRelease

> Task :capacitor-android:compileReleaseJavaWithJavac
Note: Some input files use or override a deprecated API.
Note: Recompile with -Xlint:deprecation for details.

> Task :capacitor-android:processReleaseJavaRes NO-SOURCE
> Task :capacitor-android:transformClassesAndResourcesWithPrepareIntermediateJarsForRelease
> Task :byteowls-capacitor-filesharer:javaPreCompileRelease

> Task :byteowls-capacitor-filesharer:compileReleaseJavaWithJavac
Note: /Users/yser/Code/foobar/app/node_modules/@byteowls/capacitor-filesharer/android/src/main/java/com/byteowls/capacitor/filesharer/ConfigUtils.java uses unchecked or unsafe operations.
Note: Recompile with -Xlint:unchecked for details.

> Task :byteowls-capacitor-filesharer:processReleaseJavaRes NO-SOURCE
> Task :byteowls-capacitor-filesharer:transformClassesAndResourcesWithPrepareIntermediateJarsForRelease
> Task :capacitor-cordova-android-plugins:generateReleaseBuildConfig
> Task :capacitor-cordova-android-plugins:generateReleaseRFile
> Task :capacitor-cordova-android-plugins:prepareLintJar UP-TO-DATE
> Task :capacitor-cordova-android-plugins:generateReleaseSources
> Task :capacitor-cordova-android-plugins:javaPreCompileRelease
> Task :capacitor-cordova-android-plugins:compileReleaseJavaWithJavac
> Task :capacitor-cordova-android-plugins:processReleaseJavaRes NO-SOURCE
> Task :capacitor-cordova-android-plugins:transformClassesAndResourcesWithPrepareIntermediateJarsForRelease
> Task :app:javaPreCompileRelease
> Task :app:processReleaseResources
> Task :app:compileReleaseJavaWithJavac
> Task :app:transformClassesWithDexBuilderForRelease
> Task :app:transformDexArchiveWithExternalLibsDexMergerForRelease
AGPBI: {"kind":"error","text":"Program type already present: com.getcapacitor.AndroidProtocolHandler","sources":[{}],"tool":"D8"}

> Task :app:transformDexArchiveWithDexMergerForRelease FAILED
java.lang.RuntimeException: java.lang.RuntimeException: com.android.builder.dexing.DexArchiveMergerException: Error while merging dex archives: 
Learn how to resolve the issue at https://developer.android.com/studio/build/dependencies#duplicate_classes.
Program type already present: com.getcapacitor.AndroidProtocolHandler
    at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
    at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
    at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
    at java.lang.reflect.Constructor.newInstance(Constructor.java:423)
    at java.util.concurrent.ForkJoinTask.getThrowableException(ForkJoinTask.java:593)
    at java.util.concurrent.ForkJoinTask.reportException(ForkJoinTask.java:677)
    at java.util.concurrent.ForkJoinTask.join(ForkJoinTask.java:720)
    at com.google.common.collect.ImmutableList.forEach(ImmutableList.java:407)
    at com.android.build.gradle.internal.transforms.DexMergerTransform.transform(DexMergerTransform.java:240)
    at com.android.build.gradle.internal.pipeline.TransformTask$2.call(TransformTask.java:239)
    at com.android.build.gradle.internal.pipeline.TransformTask$2.call(TransformTask.java:235)
    at com.android.builder.profile.ThreadRecorder.record(ThreadRecorder.java:102)
    at com.android.build.gradle.internal.pipeline.TransformTask.transform(TransformTask.java:230)
    at sun.reflect.GeneratedMethodAccessor328.invoke(Unknown Source)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:498)
    at org.gradle.internal.reflect.JavaMethod.invoke(JavaMethod.java:73)
    at org.gradle.api.internal.project.taskfactory.IncrementalTaskAction.doExecute(IncrementalTaskAction.java:50)
    at org.gradle.api.internal.project.taskfactory.StandardTaskAction.execute(StandardTaskAction.java:39)
    at org.gradle.api.internal.project.taskfactory.StandardTaskAction.execute(StandardTaskAction.java:26)
    at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter$1.run(ExecuteActionsTaskExecuter.java:131)
    at org.gradle.internal.operations.DefaultBuildOperationExecutor$RunnableBuildOperationWorker.execute(DefaultBuildOperationExecutor.java:300)
    at org.gradle.internal.operations.DefaultBuildOperationExecutor$RunnableBuildOperationWorker.execute(DefaultBuildOperationExecutor.java:292)
    at org.gradle.internal.operations.DefaultBuildOperationExecutor.execute(DefaultBuildOperationExecutor.java:174)
    at org.gradle.internal.operations.DefaultBuildOperationExecutor.run(DefaultBuildOperationExecutor.java:90)
    at org.gradle.internal.operations.DelegatingBuildOperationExecutor.run(DelegatingBuildOperationExecutor.java:31)
    at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.executeAction(ExecuteActionsTaskExecuter.java:120)
    at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.executeActions(ExecuteActionsTaskExecuter.java:99)
    at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.execute(ExecuteActionsTaskExecuter.java:77)
    at org.gradle.api.internal.tasks.execution.OutputDirectoryCreatingTaskExecuter.execute(OutputDirectoryCreatingTaskExecuter.java:51)
    at org.gradle.api.internal.tasks.execution.SkipUpToDateTaskExecuter.execute(SkipUpToDateTaskExecuter.java:59)
    at org.gradle.api.internal.tasks.execution.ResolveTaskOutputCachingStateExecuter.execute(ResolveTaskOutputCachingStateExecuter.java:54)
    at org.gradle.api.internal.tasks.execution.ValidatingTaskExecuter.execute(ValidatingTaskExecuter.java:59)
    at org.gradle.api.internal.tasks.execution.SkipEmptySourceFilesTaskExecuter.execute(SkipEmptySourceFilesTaskExecuter.java:101)
    at org.gradle.api.internal.tasks.execution.FinalizeInputFilePropertiesTaskExecuter.execute(FinalizeInputFilePropertiesTaskExecuter.java:44)
    at org.gradle.api.internal.tasks.execution.CleanupStaleOutputsExecuter.execute(CleanupStaleOutputsExecuter.java:91)
    at org.gradle.api.internal.tasks.execution.ResolveTaskArtifactStateTaskExecuter.execute(ResolveTaskArtifactStateTaskExecuter.java:62)
    at org.gradle.api.internal.tasks.execution.SkipTaskWithNoActionsExecuter.execute(SkipTaskWithNoActionsExecuter.java:59)
    at org.gradle.api.internal.tasks.execution.SkipOnlyIfTaskExecuter.execute(SkipOnlyIfTaskExecuter.java:54)
    at org.gradle.api.internal.tasks.execution.ExecuteAtMostOnceTaskExecuter.execute(ExecuteAtMostOnceTaskExecuter.java:43)
    at org.gradle.api.internal.tasks.execution.CatchExceptionTaskExecuter.execute(CatchExceptionTaskExecuter.java:34)
    at org.gradle.api.internal.tasks.execution.EventFiringTaskExecuter$1.run(EventFiringTaskExecuter.java:51)
    at org.gradle.internal.operations.DefaultBuildOperationExecutor$RunnableBuildOperationWorker.execute(DefaultBuildOperationExecutor.java:300)
    at org.gradle.internal.operations.DefaultBuildOperationExecutor$RunnableBuildOperationWorker.execute(DefaultBuildOperationExecutor.java:292)
    at org.gradle.internal.operations.DefaultBuildOperationExecutor.execute(DefaultBuildOperationExecutor.java:174)
    at org.gradle.internal.operations.DefaultBuildOperationExecutor.run(DefaultBuildOperationExecutor.java:90)
    at org.gradle.internal.operations.DelegatingBuildOperationExecutor.run(DelegatingBuildOperationExecutor.java:31)
    at org.gradle.api.internal.tasks.execution.EventFiringTaskExecuter.execute(EventFiringTaskExecuter.java:46)
    at org.gradle.execution.taskgraph.LocalTaskInfoExecutor.execute(LocalTaskInfoExecutor.java:42)
    at org.gradle.execution.taskgraph.DefaultTaskExecutionGraph$BuildOperationAwareWorkItemExecutor.execute(DefaultTaskExecutionGraph.java:277)
    at org.gradle.execution.taskgraph.DefaultTaskExecutionGraph$BuildOperationAwareWorkItemExecutor.execute(DefaultTaskExecutionGraph.java:262)
    at org.gradle.execution.taskgraph.DefaultTaskPlanExecutor$ExecutorWorker$1.execute(DefaultTaskPlanExecutor.java:135)
    at org.gradle.execution.taskgraph.DefaultTaskPlanExecutor$ExecutorWorker$1.execute(DefaultTaskPlanExecutor.java:130)
    at org.gradle.execution.taskgraph.DefaultTaskPlanExecutor$ExecutorWorker.execute(DefaultTaskPlanExecutor.java:200)
    at org.gradle.execution.taskgraph.DefaultTaskPlanExecutor$ExecutorWorker.executeWithWork(DefaultTaskPlanExecutor.java:191)
    at org.gradle.execution.taskgraph.DefaultTaskPlanExecutor$ExecutorWorker.run(DefaultTaskPlanExecutor.java:130)
    at org.gradle.internal.concurrent.ExecutorPolicy$CatchAndRecordFailures.onExecute(ExecutorPolicy.java:63)
    at org.gradle.internal.concurrent.ManagedExecutorImpl$1.run(ManagedExecutorImpl.java:46)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
    at org.gradle.internal.concurrent.ThreadFactoryImpl$ManagedThreadRunnable.run(ThreadFactoryImpl.java:55)
    at java.lang.Thread.run(Thread.java:745)
Caused by: java.lang.RuntimeException: com.android.builder.dexing.DexArchiveMergerException: Error while merging dex archives: 
Learn how to resolve the issue at https://developer.android.com/studio/build/dependencies#duplicate_classes.
Program type already present: com.getcapacitor.AndroidProtocolHandler
    at java.util.concurrent.ForkJoinTask$AdaptedCallable.exec(ForkJoinTask.java:1431)
    at java.util.concurrent.ForkJoinTask.doExec(ForkJoinTask.java:289)
    at java.util.concurrent.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1056)
    at java.util.concurrent.ForkJoinPool.runWorker(ForkJoinPool.java:1692)
    at java.util.concurrent.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:157)
Caused by: com.android.builder.dexing.DexArchiveMergerException: Error while merging dex archives: 
Learn how to resolve the issue at https://developer.android.com/studio/build/dependencies#duplicate_classes.
Program type already present: com.getcapacitor.AndroidProtocolHandler
    at com.android.builder.dexing.D8DexArchiveMerger.getExceptionToRethrow(D8DexArchiveMerger.java:131)
    at com.android.builder.dexing.D8DexArchiveMerger.mergeDexArchives(D8DexArchiveMerger.java:118)
    at com.android.build.gradle.internal.transforms.DexMergerTransformCallable.call(DexMergerTransformCallable.java:102)
    at com.android.build.gradle.internal.transforms.DexMergerTransformCallable.call(DexMergerTransformCallable.java:37)
    at java.util.concurrent.ForkJoinTask$AdaptedCallable.exec(ForkJoinTask.java:1424)
    ... 4 more
Caused by: com.android.tools.r8.CompilationFailedException: Compilation failed to complete
    at com.android.tools.r8.utils.ExceptionUtils.withCompilationHandler(ExceptionUtils.java:70)
    at com.android.tools.r8.utils.ExceptionUtils.withD8CompilationHandler(ExceptionUtils.java:43)
    at com.android.tools.r8.D8.run(D8.java:94)
    at com.android.builder.dexing.D8DexArchiveMerger.mergeDexArchives(D8DexArchiveMerger.java:116)
    ... 7 more
Caused by: com.android.tools.r8.utils.AbortException: Error: Program type already present: com.getcapacitor.AndroidProtocolHandler
    at com.android.tools.r8.utils.Reporter.failIfPendingErrors(Reporter.java:89)
    at com.android.tools.r8.utils.Reporter.fatalError(Reporter.java:60)
    at com.android.tools.r8.utils.ExceptionUtils.withCompilationHandler(ExceptionUtils.java:64)
    ... 10 more


FAILURE: Build failed with an exception.

* What went wrong:
Execution failed for task ':app:transformDexArchiveWithDexMergerForRelease'.
> com.android.build.api.transform.TransformException: java.lang.RuntimeException: java.lang.RuntimeException: com.android.builder.dexing.DexArchiveMergerException: Error while merging dex archives: 
  Learn how to resolve the issue at https://developer.android.com/studio/build/dependencies#duplicate_classes.
  Program type already present: com.getcapacitor.AndroidProtocolHandler

* Try:
Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output. Run with --scan to get full insights.

* Get more help at https://help.gradle.org

Deprecated Gradle features were used in this build, making it incompatible with Gradle 5.0.
Use '--warning-mode all' to show the individual deprecation warnings.
See https://docs.gradle.org/4.10.1/userguide/command_line_interface.html#sec:command_line_warnings

BUILD FAILED in 9s
62 actionable tasks: 58 executed, 4 up-to-date

Bug: NullPointerException in "handleOnActivityResult"

From the crash reports in Google Play Console, I regularly see a NullPointerException in this Plugin.

Capacitor version:

@capacitor/cli 2.3.0
@capacitor/android 2.3.0
@capacitor/core 2.3.0
@capacitor/ios 2.3.0
@capacitor/electron not installed

java.lang.RuntimeException: 
  at android.app.ActivityThread.performResumeActivity (ActivityThread.java:4053)
  at android.app.ActivityThread.handleResumeActivity (ActivityThread.java:4085)
  at android.app.servertransaction.ResumeActivityItem.execute (ResumeActivityItem.java:51)
  at android.app.servertransaction.TransactionExecutor.executeLifecycleState (TransactionExecutor.java:145)
  at android.app.servertransaction.TransactionExecutor.execute (TransactionExecutor.java:70)
  at android.app.ActivityThread$H.handleMessage (ActivityThread.java:1984)
  at android.os.Handler.dispatchMessage (Handler.java:106)
  at android.os.Looper.loop (Looper.java:216)
  at android.app.ActivityThread.main (ActivityThread.java:7211)
  at java.lang.reflect.Method.invoke (Native Method)
  at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run (RuntimeInit.java:494)
  at com.android.internal.os.ZygoteInit.main (ZygoteInit.java:975)
Caused by: java.lang.RuntimeException: 
  at android.app.ActivityThread.deliverResults (ActivityThread.java:4683)
  at android.app.ActivityThread.performResumeActivity (ActivityThread.java:4042)
Caused by: java.lang.NullPointerException: 
  at com.byteowls.capacitor.filesharer.FileSharerPlugin.handleOnActivityResult (FileSharerPlugin.java:110)
  at com.getcapacitor.Bridge.onActivityResult (Bridge.java:771)
  at com.getcapacitor.BridgeActivity.onActivityResult (BridgeActivity.java:216)
  at android.app.Activity.dispatchActivityResult (Activity.java:7806)
  at android.app.ActivityThread.deliverResults (ActivityThread.java:4676)

It seems like the PluginCall returned from getSavedCall() can be null. Is this a known issue? Do you know how this situation can occur?

Library version:

  • 2.0.0

Your Plugin Configuration

{
import {Plugins} from '@capacitor/core';
const {Share} = Plugins;
                                            
Plugins.FileSharer.share({
                                                filename: "mindlib-export.opml",
                                                base64Data: btoa(unescape(encodeURIComponent(result))),
                                                contentType: "text/plain",
                                            }) ...
}

Affected Platform(s):

  • Android

No save or download file option on Android

Description

I am testing on Android 10 and I don't see the option to Save or Download the shared photo to my photo library. It is available in iOS though.

Is it related to permission?

FYI, I have granted Camera and Photos permissions using the Capacitor Camera plugin and have the READ_EXTERNAL_STORAGE & WRITE_EXTERNAL_STORAGE lines in AndroidManifest.xml.

Capacitor version:

Run npx cap doctor:

@capacitor/cli: 4.7.0
  @capacitor/core: 4.7.1
  @capacitor/android: 4.7.1
  @capacitor/ios: 4.7.1

Library version:

  • 4.0.0

Your Plugin Configuration

{
    filename: `photo-${this.activePhoto.id}.jpg`,        
    base64Data: this.activePhotoBase64,
    contentType: "image/jpg",
}

Upgrade to Capacitor 2.0.0

Currently the plugin is not usable with Capacitor 2.x, if only transitive dependencies from Cap are used because of AndroidX.

Plus migration to Swift 5.

Bug: App crashes upon sharing file on whatsapp

Capacitor version:

Run npx cap doctor:

  @capacitor/cli 2.4.2
  @capacitor/core 2.4.2
  @capacitor/android 2.4.2

Library version:

  • 2.0.0

Your Plugin Configuration

{
  "name": "dilemma",
  "version": "0.0.1",
  "author": "Ionic Framework",
  "homepage": "https://ionicframework.com/",
  "scripts": {
    "ng": "ng",
    "start": "ng serve",
    "build": "ng build",
    "test": "ng test",
    "lint": "ng lint",
    "e2e": "ng e2e"
  },
  "private": true,
  "dependencies": {
    "@angular/common": "~10.0.0",
    "@angular/core": "~10.0.0",
    "@angular/fire": "^6.0.3",
    "@angular/forms": "~10.0.0",
    "@angular/platform-browser": "~10.0.0",
    "@angular/platform-browser-dynamic": "~10.0.0",
    "@angular/router": "~10.0.0",
    "@byteowls/capacitor-filesharer": "^2.0.0",
    "@capacitor/android": "^2.4.2",
    "@capacitor/core": "2.4.2",
    "@codetrix-studio/capacitor-google-auth": "^2.1.1",
    "@ionic-native/core": "^5.0.0",
    "@ionic-native/google-plus": "^5.28.0",
    "@ionic-native/social-sharing": "^5.28.0",
    "@ionic-native/splash-screen": "^5.0.0",
    "@ionic-native/status-bar": "^5.0.0",
    "@ionic/angular": "^5.0.0",
    "angularfire2": "^5.4.2",
    "axios": "^0.20.0",
    "capacitor-firebase-auth": "^2.3.2",
    "cordova-plugin-x-socialsharing": "^6.0.2",
    "es6-promise-plugin": "^4.2.2",
    "firebase": "^7.22.1",
    "rxjs": "~6.5.5",
    "tslib": "^2.0.0",
    "zone.js": "~0.10.3"
  },
  "devDependencies": {
    "@angular-devkit/build-angular": "~0.1000.0",
    "@angular/cli": "~10.0.5",
    "@angular/compiler": "~10.0.0",
    "@angular/compiler-cli": "~10.0.0",
    "@angular/language-service": "~10.0.0",
    "@capacitor/cli": "2.4.2",
    "@ionic/angular-toolkit": "^2.3.0",
    "@types/jasmine": "~3.5.0",
    "@types/jasminewd2": "~2.0.3",
    "@types/node": "^12.11.1",
    "codelyzer": "^6.0.0",
    "jasmine-core": "~3.5.0",
    "jasmine-spec-reporter": "~5.0.0",
    "karma": "~5.0.0",
    "karma-chrome-launcher": "~3.1.0",
    "karma-coverage-istanbul-reporter": "~3.0.2",
    "karma-jasmine": "~3.3.0",
    "karma-jasmine-html-reporter": "^1.5.0",
    "protractor": "~7.0.0",
    "ts-node": "~8.3.0",
    "tslint": "~6.1.0",
    "typescript": "~3.9.5"
  },
  "description": "An Ionic project",
  "browser": {
    "fs": false,
    "path": false,
    "os": false
  }
}

Affected Platform(s):

  • Android

Current Behavior

I am able to share files on WhatsApp without any problems except that after sharing the file if you press back, you don't get back to the app. The app has to be restarted.

Expected Behavior

Upon successful sharing of file on whatApp and then clicking on android back button , user should get back to the app. The app shouldnt crash and should be have to be started again.

Sample Code or Sample Application Repo

      Plugins.FileSharer.share({
          filename: "test2.jpg",
          text:"www.xyz.com",
          base64Data:  imageBase64 ,
          contentType: "image/jpeg",
      }).then(() => {
          // empty
      }).catch(error => {
          console.error("File sharing failed", error.message);
      });

Reproduction Steps

Just share a picture via whatsapp and then get back to the app. You would find that it gets restarted.

Other Information

The following error gets logged in android studio console as soon as you click share:

E/DatabaseUtils: Writing exception to parcel
    java.lang.SecurityException: Permission Denial: reading com.byteowls.capacitor.filesharer.FileSharerProvider uri content://io.ionic.starter.filesharer.fileprovider/capfilesharer/test2.jpg from pid=14504, uid=1000 requires the provider be exported, or grantUriPermission()
        at android.content.ContentProvider.enforceReadPermissionInner(ContentProvider.java:820)
        at android.content.ContentProvider$Transport.enforceReadPermission(ContentProvider.java:684)
        at android.content.ContentProvider$Transport.enforceFilePermission(ContentProvider.java:674)
        at android.content.ContentProvider$Transport.openTypedAssetFile(ContentProvider.java:548)
        at android.content.ContentProviderNative.onTransact(ContentProviderNative.java:327)
        at android.os.Binder.execTransactInternal(Binder.java:1154)
        at android.os.Binder.execTransact(Binder.java:1123)

Solution for android app crashes when file too big

I had issues with the android app crashing once the target app was chosen, with an error like this, even though the target app successfully got the image:

2019-09-22 15:11:26.442 5306-5306/com.ktrajkovski.gifer E/JavaBinder: !!! FAILED BINDER TRANSACTION !!!  (parcel size = 4346876)
...
2019-09-22 15:11:27.822 5306-5306/com.ktrajkovski.gifer E/AndroidRuntime: FATAL EXCEPTION: main
    Process: com.ktrajkovski.gifer, PID: 5306
    java.lang.RuntimeException: android.os.TransactionTooLargeException: data parcel size 4346876 bytes
        at android.app.ActivityThread$StopInfo.run(ActivityThread.java:3950)
        at android.os.Handler.handleCallback(Handler.java:790)
        at android.os.Handler.dispatchMessage(Handler.java:99)
        at android.os.Looper.loop(Looper.java:164)
        at android.app.ActivityThread.main(ActivityThread.java:6494)
        at java.lang.reflect.Method.invoke(Native Method)
        at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:440)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:807)
     Caused by: android.os.TransactionTooLargeException: data parcel size 4346876 bytes
        at android.os.BinderProxy.transactNative(Native Method)
        at android.os.BinderProxy.transact(Binder.java:764)
        at android.app.IActivityManager$Stub$Proxy.activityStopped(IActivityManager.java:4623)
        at android.app.ActivityThread$StopInfo.run(ActivityThread.java:3934)

Solved it by adding:

  @Override
  public void onSaveInstanceState(Bundle outState) {
    super.onSaveInstanceState(outState);
    outState.clear();
  }

to the main activity.

Hope someone with the same issue finds this useful. Perhaps this should also be added to the readme

Feat: Replace file-sharer dependency for file-sharer-es in order to reduce bundle size

Describe the Feature

Using capacitor-filesharer in an Angular application produces the following output during the building process:

...\@byteowls\capacitor-filesharer\dist\esm\web.js depends on 'file-saver'. CommonJS or AMD dependencies can cause optimization bailouts.
For more info see: https://angular.io/guide/build#configuring-commonjs-dependencies

This is because there is a dependency on file-sharer which uses the CommonJS syntax.

Platform(s) Support Requested

  • Android
  • iOS
  • Web

Describe Preferred Solution

Replace the dependency of file-sharer to file-sharer-es in order to use ES modules syntax.

Describe Alternatives

None

Related Code

None

Additional Context

None

Bug: 23 MB pdf (limit seems to be 10 MB) causes Java error with very little trace info

Capacitor version: 3.0.0

Run npx cap doctor:

๐Ÿ’Š   Capacitor Doctor  ๐Ÿ’Š 

Latest Dependencies:

  @capacitor/cli: 4.1.0
  @capacitor/core: 4.1.0
  @capacitor/android: 4.1.0
  @capacitor/ios: 4.1.0

Installed Dependencies:

  @capacitor/ios: not installed
  @capacitor/cli: 3.6.0
  @capacitor/core: 3.6.0
  @capacitor/android: 3.6.0

[success] iOS looking great! ๐Ÿ‘Œ
[success] Android looking great! ๐Ÿ‘Œ

Affected Platform(s):

  • Android

Current Behavior

App crashes with Java error while trying to open the FileShare popup on a native device or AVD.
This is before being able to choose the app to share the file with, the dialog simply won't open.
In Android Studio + the web console, the only error that's being shown is as follows:
E/Capacitor/Console: File: http://localhost/ - Line 316 - Msg: Error: Java exception was raised during method invocation

There doesn't seem to be more info than this, or it's just me not knowing how to get to that point.

Expected Behavior

The dialog to open.

Reproduction Steps

Try sharing this large PDF while on a device or AVD.

Android: app crash after sharing

Android:

When sharing screen appears:
Share to ex Whatsapp, it opens whatsapp, after getting back to app it restarts ( crash)

ionic 6, latest Capacitor

-- Update:

I use Base64 Data. with a small PDF file it seems to work OK. < 50 kb. But larger get these error:

Shutting down VM
2022-10-17 15:20:19.868 13960-13960/com.ip.infraphoto E/AndroidRuntime: FATAL EXCEPTION: main
Process: com.ip.infraphoto, PID: 13960
java.lang.RuntimeException: android.os.TransactionTooLargeException: data parcel size 1639160 bytes
at android.app.ActivityClient.activityStopped(ActivityClient.java:86)
at android.app.servertransaction.PendingTransactionActions$StopInfo.run(PendingTransactionActions.java:143)
at android.os.Handler.handleCallback(Handler.java:938)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loopOnce(Looper.java:226)
at android.os.Looper.loop(Looper.java:313)
at android.app.ActivityThread.main(ActivityThread.java:8663)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:571)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1135)
Caused by: android.os.TransactionTooLargeException: data parcel size 1639160 bytes
at android.os.BinderProxy.transactNative(Native Method)
at android.os.BinderProxy.transact(BinderProxy.java:635)
at android.app.IActivityClientController$Stub$Proxy.activityStopped(IActivityClientController.java:1358)
at android.app.ActivityClient.activityStopped(ActivityClient.java:83)
at android.app.servertransaction.PendingTransactionActions$StopInfo.run(PendingTransactionActions.java:143)ย 
at android.os.Handler.handleCallback(Handler.java:938)ย 
at android.os.Handler.dispatchMessage(Handler.java:99)ย 
at android.os.Looper.loopOnce(Looper.java:226)ย 
at android.os.Looper.loop(Looper.java:313)ย 
at android.app.ActivityThread.main(ActivityThread.java:8663)ย 
at java.lang.reflect.Method.invoke(Native Method)ย 
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:571)ย 
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1135)ย 
2022-10-17 15:20:19.905 13960-13960/com.ip.infraphoto I/Process: Sending signal. PID: 13960 SIG: 9
2022-10-17 15:20:28.797 15769-15769/? I/m.ip.infraphot: Late-enabling -Xcheck:jni
2022-10-17 15:20:28.973 15769-15769/? E/USNET: USNET: appName: com.ip.infraphoto
2022-10-17 15:20:28.976 15769-15769/? D/ProcessState: Binder ioctl to enable oneway sp

The code skips whatever is written after ''Filereader.onloadend = "

I am using Filesharer in my Ionic 5 app. But It is not working.
I have used breakpoints in the code and found out that, the code is not able to reach after Filereader.onloadend =() => { and after. This is the reason I am not able to use the plugin in my app.
Please help.

Bug: iOS: Preview panel showing up for PDF instead of the "Share" modal

Capacitor version:

Latest Dependencies:

  @capacitor/cli: 2.2.1

  @capacitor/core: 2.2.1

  @capacitor/android: 2.2.1

  @capacitor/electron: 2.2.1

  @capacitor/ios: 2.2.1

Installed Dependencies:

  @capacitor/electron not installed


  @capacitor/cli 2.0.2

  @capacitor/android 2.0.2

  @capacitor/ios 2.0.2

  @capacitor/core 2.0.2

[success] Android looking great! ๐Ÿ‘Œ
  Found 5 Capacitor plugins for ios:
    @byteowls/capacitor-filesharer (2.0.0)
    cordova-plugin-actionsheet (2.3.3)
    cordova-plugin-badge (0.8.8)
    cordova-plugin-dialogs (2.0.2)
    uk.co.workingedge.phonegap.plugin.launchnavigator (5.0.4)
[success] iOS looking great! ๐Ÿ‘Œ

Library version:

  • 2.0.0

Your Plugin Configuration

FileSharer.share({
          filename: file.name,     // contains "invoice_0002.pdf"
          base64Data: base64,   // verified that this contains valid base64 encoded data
          contentType: file.type, // contains "application/pdf"
        }).catch(error => {
          console.error('File sharing failed', error.message);
        });

Affected Platform(s):

  • iOS

Current Behavior

When I invoke the plugin, the PDF file gets displayed in some sort of PDF preview UI instead of the Share activity modal.
The PDF renders as expected, which means the data itself is OK but somehow there's no Share modal at all and there's also no way to close that preview panel.

Expected Behavior

I would have expected the Share modal to be displayed as such: https://youtu.be/p7f6yamZxCk?t=762

Sample Code or Sample Application Repo

See above.

Other Information

The iOS logs are only showing this:

WebView loaded

Bug: Writing exception to parcel on Android

Capacitor version:

Capacitor Doctor

Latest Dependencies:       

  @capacitor/cli: 5.6.0    
  @capacitor/core: 5.6.0   
  @capacitor/android: 5.6.0
  @capacitor/ios: 5.6.0    

Installed Dependencies:    

  @capacitor/cli: 4.6.1    
  @capacitor/core: 4.7.1   
  @capacitor/android: 4.8.0
  @capacitor/ios: 4.6.1    

[success] Android looking great! ๐Ÿ‘Œ
[error] Xcode is not installed

Library version:

  • other: "@byteowls/capacitor-filesharer": "^4.0.1",

Your Plugin Configuration

{
   import { FileSharer, type ShareFileOptions } from '@byteowls/capacitor-filesharer';

  public async shareFile(fileUrl:string, shareFilename:string,  contentType: string) {
 try {
     
      const copyOfSharedFile  = await Filesystem.copy({
        from: fileUrl!,
        to: shareFilename,
        toDirectory: Directory.Data
      });

      const base64FileContents =  await this.readFileAsBase64(copyOfSharedFile ); 
      if(base64FileContents === null || base64FileContents.length === 0){
        throw new Error('Error sharing file. Unable to readFileAsBase64');
      }

      const shareOptions: ShareFileOptions = {filename: shareFilename, contentType:contentType, path:copyOfSharedFile.uri, base64Data:base64FileContents};
      await FileSharer.share(shareOptions);
      await Filesystem.deleteFile({path: copyOfSharedFile.uri, directory:Directory.Data});
    } catch (error) {
      const errMsg =  <string> error;
      if(errMsg == 'USER_CANCELLED'){
        toastr.info('Cancelled');
        return;
      }
      throw new Error('Error sharing log file:' +  <string> error);
    }
  }
  
  async readFileAsBase64(file: CopyResult): Promise<string> {
    try {
      const fileStat = await Filesystem.stat({
        path: file.uri,
      });

      if (!fileStat || !fileStat.size) {
        throw new Error ('Error sharing file: file does not exist or is empty.');
      }
  
      const fileData = await Filesystem.readFile({ path: file.uri });
  
      if (!fileData || !fileData.data) {
        throw new Error('Error sharing file: Unable to read file data.');
      }

      return fileData.data;//base64
    } catch (error) {
      const errMsg = <string> error;
      throw new Error(errMsg);
    }
  }
}

Affected Platform(s):

  • Android

Current Behavior

A sqlite db is copied to a backup file and the backup file is shared. This works. However, when reviewing the Android LogCat is see:
Writing exception to parcel
java.lang.SecurityException: Permission Denial: reading com.byteowls.capacitor.filesharer.FileSharerProvider uri content://com.xxx.yyy.zzz.filesharer.fileprovider/capfilesharer/myLog-20231227-093441.db from pid=14783, uid=1000 requires the provider be exported, or grantUriPermission()
at android.content.ContentProvider.enforceReadPermissionInner(ContentProvider.java:918)
at android.content.ContentProvider.semEnforceReadPermission(ContentProvider.java:836)
at android.content.ContentProvider$Transport.enforceReadPermission(ContentProvider.java:712)
at android.content.ContentProvider$Transport.query(ContentProvider.java:251)
at android.content.ContentProviderNative.onTransact(ContentProviderNative.java:107)
at android.os.Binder.execTransactInternal(Binder.java:1316)
at android.os.Binder.execTransact(Binder.java:1280)
2023-12-27 09:34:43.039 14783-14783 ChooserActivity android:ui W Could not load (content://com.xxx.yyy.zzz.filesharer.fileprovider/capfilesharer/myLog-20231227-093441.db) thumbnail/name for preview. If desired, consider using Intent#createChooser to launch the ChooserActivity, and set your Intent's clipData and flags in accordance with that method's documentation
2023-12-27 09:34:43.044 14502-14521 DatabaseUtils com.xxx.yyy.zzz E Writing exception to parcel
java.lang.SecurityException: Permission Denial: reading com.byteowls.capacitor.filesharer.FileSharerProvider uri content://com.xxx.yyy.zzz.filesharer.fileprovider/capfilesharer/myLog-20231227-093441.db from pid=14783, uid=1000 requires the provider be exported, or grantUriPermission()
at android.content.ContentProvider.enforceReadPermissionInner(ContentProvider.java:918)
at android.content.ContentProvider.semEnforceReadPermission(ContentProvider.java:836)
at android.content.ContentProvider$Transport.enforceReadPermission(ContentProvider.java:712)
at android.content.ContentProvider$Transport.query(ContentProvider.java:251)
at android.content.ContentProviderNative.onTransact(ContentProviderNative.java:107)
at android.os.Binder.execTransactInternal(Binder.java:1316)
at android.os.Binder.execTransact(Binder.java:1280)

Expected Behavior

No errors in logcat.

Sample Code or Sample Application Repo

see above

Reproduction Steps

share a file on Android, review the logcat in Android Studio.

Other Information

I dont think I need to add grantUriPermission in my app... but maybe.

Feat: Can you share a text, json or csv file?

Describe the Feature

I'd like to be able to share a text, csv and/or json file, but that currently doesn't look possible.

Platform(s) Support Requested

  • Android
  • iOS

Describe Preferred Solution

The ability to also share text, csv and/or json files.

Describe Alternatives

Since I'm already using your plugin to share images, I'd prefer to use it to share/export text files as well. I know there are ways to get this done with similar plugins, but I'd rather use yours.

Related Code

    FileSharer.share({
        filename: 'filename.txt',
        base64Data: 'file content',
        contentType: 'text',
    });

Additional Context

I'm currently using capacitor 2

Upgrade to Capacitor 1.1.0

This includes upgrading the plugin to the latest structure as well:

By looking at a newly generated plugin there where a few changes.

Core:

  • package.json: replace capacitor/core with capacitor/android and capacitor/ios
  • web.ts register the plugin by
import { registerWebPlugin } from '@capacitor/core';
registerWebPlugin(FileSharer);

This did not work in the betas but should be fixed now. The workaround in the app.component.ts can be removed because the plugin is already registered.

Android:

  • Move sources to /android/ and remove subfolders @byteowls/capacitor-.../. The subfolders were needed in the past but not anymore
  • Copy the settings.gradle from the generated project because the capacitor/android from node_modules is used
  • Replace the capacitor library depencency implementation 'ionic-team:capacitor-android:1.0.0-beta.17' with a project dependeny implementation project(':capacitor-android')`
  • Enforce Java 8
android {
  compileOptions {
        sourceCompatibility JavaVersion.VERSION_1_8
        targetCompatibility JavaVersion.VERSION_1_8
    }
}
  • Change target android version to 28

Bug: Instagram won't appear in the share dialog for my app, but will appear for other apps with the same file

Capacitor version:

Run npx cap doctor:

Latest Dependencies:

@capacitor/cli: 4.7.1
@capacitor/core: 4.7.1
@capacitor/android: 4.7.1
@capacitor/ios: 4.7.1

Installed Dependencies:

@capacitor/cli: 4.7.0
@capacitor/core: 4.7.0
@capacitor/android: 4.7.0
@capacitor/ios: 4.7.0

Library version:

  • 4.0.0

Your Plugin Configuration

Affected Platform(s):

  • Android

Current Behavior

Share dialog won't show Instagram , but shows WhatsApp , when I try to share the same image from withing email or WhatsApp instagram appears normally

Expected Behavior

Instagram should be displayed on the share dialog

Sample Code or Sample Application Repo

Everything is default

Reproduction Steps

call the share dialog in a phone with instagram installed

  const handleShare = (m) => {
    async function share() {
      if (!url.match(/^[a-zA-Z]+:\/\//)) {
        url = "http://" + url;
      }
      let nurl = url.replace(/^(https?:\/\/)?(www\.)?/i, "$1www.") ;

      await fetch(nurl)
        .then(res => {
          return res.blob()
        })
        .then(blob => {
          return blob.arrayBuffer();
        })
        .then(ab => {
          const uint8Array = new Uint8Array(ab);

          var chunkSize = 1024;
          var str = '';
          for (var i = 0; i < uint8Array.length; i += chunkSize) {
            var chunk = uint8Array.subarray(i, i + chunkSize);
            str += String.fromCharCode.apply(null, chunk);
          }
          var base64String = btoa(str);
          
          FileSharer.share({
            filename: name,
            contentType: "application/png",
            base64Data: base64String,
          }).catch(error => {
            //alert("File sharing failed" + error.message);
            console.error("File sharing failed", error.message);
          });
        })
        .catch((error) => {
          alert(error);
        });

    }
    share();
  }

File sharing failed: The string contains invalid characters.

Hi,
I'm trying the following code on iOS:

sharePhoto() {
     var self = this;
            var img = document.getElementById('photo').attr('src');
            FileSharer.share({
                filename: Math.random()+"_pic.png",
                base64Data: img.replace('data:image/png;base64', '').replace('image/png;base64', ''),
                contentType: "image/png",
            }).then(() => {
                alert('DONE');
            }).catch(error => {
                console.error("File sharing failed:", error.message);
            });
},

I'm 100% the picture is correct, because it's shown correctly on the image src.

But it always gives me: โšก๏ธ [error] - File sharing failed: The string contains invalid characters.

And when I do:
base64Data: img.replace('data:image/png;base64', '').replace('image/png;base64', '').replace(/\s/g, ''),
It gives me: ERR_PARAM_DATA_INVALID

provider name collisions with multiple apps

Failure [INSTALL_FAILED_CONFLICTING_PROVIDER: Scanning Failed.: Can't install because provider name com.byteowls.capacitor.filesharer.fileprovider (in package com.example.app) is already used by com.example.app.dev]

maybe this fork has resolved this issue, can it be merged? jpxd@87c3c48

Not working on ipad 13.2+

The dialog is not shown any more on at least IOS 13.2.1 and 13.3.

XCode Debug output

2020-01-04 19:49:21.209085+0100 App[297:5948] [Process] kill() returned unexpected error 1
2020-01-04 19:49:21.371510+0100 App[297:5948] [Process] kill() returned unexpected error 1
2020-01-04 19:49:21.854794+0100 App[297:5948] [LayoutConstraints] Unable to simultaneously satisfy constraints.
	Probably at least one of the constraints in the following list is one you don't want. 
	Try this: 
		(1) look at each constraint and try to figure out which you don't expect; 
		(2) find the code that added the unwanted constraint or constraints and fix it. 
(
    "<NSLayoutConstraint:0x28177cf00 LPLinkView:0x105209ac0.leading == UILayoutGuide:0x280d37020'UIViewLayoutMarginsGuide'.leading   (active)>",
    "<NSLayoutConstraint:0x28177d770 H:[LPLinkView:0x105209ac0]-(59)-|   (active, names: '|':_UIActivityContentTitleView:0x1053d18b0 )>",
    "<NSLayoutConstraint:0x28170f840 H:|-(0)-[_UIActivityContentTitleView:0x1053d18b0]   (active, names: '|':_UINavigationBarContentView:0x105277860 )>",
    "<NSLayoutConstraint:0x28170def0 _UIActivityContentTitleView:0x1053d18b0.trailing == _UINavigationBarContentView:0x105277860.trailing   (active)>",
    "<NSLayoutConstraint:0x28177b7f0 'UIView-Encapsulated-Layout-Width' _UINavigationBarContentView:0x105277860.width == 6   (active)>",
    "<NSLayoutConstraint:0x28177d1d0 'UIView-leftMargin-guide-constraint' H:|-(16)-[UILayoutGuide:0x280d37020'UIViewLayoutMarginsGuide'](LTR)   (active, names: '|':_UIActivityContentTitleView:0x1053d18b0 )>"
)

Will attempt to recover by breaking constraint 
<NSLayoutConstraint:0x28177cf00 LPLinkView:0x105209ac0.leading == UILayoutGuide:0x280d37020'UIViewLayoutMarginsGuide'.leading   (active)>

Make a symbolic breakpoint at UIViewAlertForUnsatisfiableConstraints to catch this in the debugger.
The methods in the UIConstraintBasedLayoutDebugging category on UIView listed in <UIKitCore/UIView.h> may also be helpful.
โšก๏ธ  TO JS {}
2020-01-04 19:49:22.858654+0100 App[297:5948] [Process] kill() returned unexpected error 1

Testing on Physical Device - no error, no share menu

Description

I'm using the code below and on my computer's web browser it just downloads the image (I assume that's fine, idk) but on my android device, nothing happens. I've used the device inspector and checked the console log, I see the console.log() messages all showing up fine and it does end up showing the final "test" meaning there was no error, however no share menu pops up at all. Any idea what I'm doing wrong here?

    shareBlog: async function(){
        const imageUrl = "https://i.imgur.com/hrpUdJp.jpeg";

        const b64data = await this.getBase64FromUrl(imageUrl);
        const fb64 = b64data.replace(/^data:image\/[a-z]+;base64,/, "");
        console.log(fb64);

        const contentType =  b64data.match(/[^:]\w+\/[\w-+\d.]+(?=;|,)/)[0];
        console.log(contentType);
        
        const resp = await FileSharer.share({
            filename: "test.jpeg",
            base64Data: fb64,
            contentType: contentType,
        }).then(() => {
            console.log("test");
        }).catch(error => {
            console.error("File sharing failed", error.message);
        });

        console.log(resp);

    }

Capacitor version:

Run npx cap doctor:

Latest Dependencies:

  @capacitor/cli: 3.2.0
  @capacitor/core: 3.2.0
  @capacitor/android: 3.2.0
  @capacitor/ios: 3.2.0

Installed Dependencies:

  @capacitor/ios: not installed
  @capacitor/cli: 3.1.2
  @capacitor/core: 3.2.0
  @capacitor/android: 3.2.0

[success] Android looking great! ๐Ÿ‘Œ

Library version:

  • 2.0.0

Your Plugin Configuration

{
  "compilerOptions": {
    "target": "esnext",
    "module": "esnext",
    "strict": false,
    "jsx": "preserve",
    "importHelpers": true,
    "moduleResolution": "node",
    "skipLibCheck": true,
    "esModuleInterop": true,
    "allowSyntheticDefaultImports": true,
    "sourceMap": true,
    "baseUrl": ".",
    "types": [
      "webpack-env",
      "jest"
    ],
    "paths": {
      "@/*": [
        "src/*"
      ]
    },
    "lib": [
      "esnext",
      "dom",
      "dom.iterable",
      "scripthost"
    ]
  },
  "include": [
    "src/**/*.ts",
    "src/**/*.tsx",
    "src/**/*.vue",
    "tests/**/*.ts",
    "tests/**/*.tsx"
  ],
  "exclude": [
    "node_modules"
  ]
}

Can we share some text along with file .

Hi,
I wanted to send a file with some text associated (e.g Title, description) with it using Filesharer,
Is it possible to do it with this plugin ?
If yes, can you tell me how .

Thankyou !

Compile error on Android

org.gradle.execution.MultipleBuildFailures: Build completed with 1 failures.
	at org.gradle.initialization.DefaultGradleLauncher$ExecuteTasks.run(DefaultGradleLauncher.java:386)
	at org.gradle.internal.operations.DefaultBuildOperationExecutor$RunnableBuildOperationWorker.execute(DefaultBuildOperationExecutor.java:301)
	at org.gradle.internal.operations.DefaultBuildOperationExecutor$RunnableBuildOperationWorker.execute(DefaultBuildOperationExecutor.java:293)
	at org.gradle.internal.operations.DefaultBuildOperationExecutor.execute(DefaultBuildOperationExecutor.java:175)
	at org.gradle.internal.operations.DefaultBuildOperationExecutor.run(DefaultBuildOperationExecutor.java:91)
	at org.gradle.internal.operations.DelegatingBuildOperationExecutor.run(DelegatingBuildOperationExecutor.java:31)
	at org.gradle.initialization.DefaultGradleLauncher.runTasks(DefaultGradleLauncher.java:247)
	at org.gradle.initialization.DefaultGradleLauncher.doBuildStages(DefaultGradleLauncher.java:159)
	at org.gradle.initialization.DefaultGradleLauncher.executeTasks(DefaultGradleLauncher.java:134)
	at org.gradle.internal.invocation.GradleBuildController$1.execute(GradleBuildController.java:58)
	at org.gradle.internal.invocation.GradleBuildController$1.execute(GradleBuildController.java:55)
	at org.gradle.internal.invocation.GradleBuildController$3.create(GradleBuildController.java:82)
	at org.gradle.internal.invocation.GradleBuildController$3.create(GradleBuildController.java:75)
	at org.gradle.internal.work.DefaultWorkerLeaseService.withLocks(DefaultWorkerLeaseService.java:183)
	at org.gradle.internal.work.StopShieldingWorkerLeaseService.withLocks(StopShieldingWorkerLeaseService.java:40)
	at org.gradle.internal.invocation.GradleBuildController.doBuild(GradleBuildController.java:75)
	at org.gradle.internal.invocation.GradleBuildController.run(GradleBuildController.java:55)
	at org.gradle.tooling.internal.provider.runner.BuildModelActionRunner.run(BuildModelActionRunner.java:54)
	at org.gradle.launcher.exec.ChainingBuildActionRunner.run(ChainingBuildActionRunner.java:35)
	at org.gradle.launcher.exec.ChainingBuildActionRunner.run(ChainingBuildActionRunner.java:35)
	at org.gradle.launcher.exec.BuildOutcomeReportingBuildActionRunner.run(BuildOutcomeReportingBuildActionRunner.java:58)
	at org.gradle.tooling.internal.provider.ValidatingBuildActionRunner.run(ValidatingBuildActionRunner.java:32)
	at org.gradle.launcher.exec.BuildCompletionNotifyingBuildActionRunner.run(BuildCompletionNotifyingBuildActionRunner.java:39)
	at org.gradle.launcher.exec.RunAsBuildOperationBuildActionRunner$3.call(RunAsBuildOperationBuildActionRunner.java:49)
	at org.gradle.launcher.exec.RunAsBuildOperationBuildActionRunner$3.call(RunAsBuildOperationBuildActionRunner.java:44)
	at org.gradle.internal.operations.DefaultBuildOperationExecutor$CallableBuildOperationWorker.execute(DefaultBuildOperationExecutor.java:315)
	at org.gradle.internal.operations.DefaultBuildOperationExecutor$CallableBuildOperationWorker.execute(DefaultBuildOperationExecutor.java:305)
	at org.gradle.internal.operations.DefaultBuildOperationExecutor.execute(DefaultBuildOperationExecutor.java:175)
	at org.gradle.internal.operations.DefaultBuildOperationExecutor.call(DefaultBuildOperationExecutor.java:101)
	at org.gradle.internal.operations.DelegatingBuildOperationExecutor.call(DelegatingBuildOperationExecutor.java:36)
	at org.gradle.launcher.exec.RunAsBuildOperationBuildActionRunner.run(RunAsBuildOperationBuildActionRunner.java:44)
	at org.gradle.launcher.exec.InProcessBuildActionExecuter$1.transform(InProcessBuildActionExecuter.java:49)
	at org.gradle.launcher.exec.InProcessBuildActionExecuter$1.transform(InProcessBuildActionExecuter.java:46)
	at org.gradle.composite.internal.DefaultRootBuildState.run(DefaultRootBuildState.java:78)
	at org.gradle.launcher.exec.InProcessBuildActionExecuter.execute(InProcessBuildActionExecuter.java:46)
	at org.gradle.launcher.exec.InProcessBuildActionExecuter.execute(InProcessBuildActionExecuter.java:31)
	at org.gradle.launcher.exec.BuildTreeScopeBuildActionExecuter.execute(BuildTreeScopeBuildActionExecuter.java:42)
	at org.gradle.launcher.exec.BuildTreeScopeBuildActionExecuter.execute(BuildTreeScopeBuildActionExecuter.java:28)
	at org.gradle.tooling.internal.provider.ContinuousBuildActionExecuter.execute(ContinuousBuildActionExecuter.java:78)
	at org.gradle.tooling.internal.provider.ContinuousBuildActionExecuter.execute(ContinuousBuildActionExecuter.java:52)
	at org.gradle.tooling.internal.provider.SubscribableBuildActionExecuter.execute(SubscribableBuildActionExecuter.java:59)
	at org.gradle.tooling.internal.provider.SubscribableBuildActionExecuter.execute(SubscribableBuildActionExecuter.java:36)
	at org.gradle.tooling.internal.provider.SessionScopeBuildActionExecuter.execute(SessionScopeBuildActionExecuter.java:68)
	at org.gradle.tooling.internal.provider.SessionScopeBuildActionExecuter.execute(SessionScopeBuildActionExecuter.java:38)
	at org.gradle.tooling.internal.provider.GradleThreadBuildActionExecuter.execute(GradleThreadBuildActionExecuter.java:37)
	at org.gradle.tooling.internal.provider.GradleThreadBuildActionExecuter.execute(GradleThreadBuildActionExecuter.java:26)
	at org.gradle.tooling.internal.provider.ParallelismConfigurationBuildActionExecuter.execute(ParallelismConfigurationBuildActionExecuter.java:43)
	at org.gradle.tooling.internal.provider.ParallelismConfigurationBuildActionExecuter.execute(ParallelismConfigurationBuildActionExecuter.java:29)
	at org.gradle.tooling.internal.provider.StartParamsValidatingActionExecuter.execute(StartParamsValidatingActionExecuter.java:60)
	at org.gradle.tooling.internal.provider.StartParamsValidatingActionExecuter.execute(StartParamsValidatingActionExecuter.java:32)
	at org.gradle.tooling.internal.provider.SessionFailureReportingActionExecuter.execute(SessionFailureReportingActionExecuter.java:55)
	at org.gradle.tooling.internal.provider.SessionFailureReportingActionExecuter.execute(SessionFailureReportingActionExecuter.java:41)
	at org.gradle.tooling.internal.provider.SetupLoggingActionExecuter.execute(SetupLoggingActionExecuter.java:48)
	at org.gradle.tooling.internal.provider.SetupLoggingActionExecuter.execute(SetupLoggingActionExecuter.java:32)
	at org.gradle.launcher.daemon.server.exec.ExecuteBuild.doBuild(ExecuteBuild.java:67)
	at org.gradle.launcher.daemon.server.exec.BuildCommandOnly.execute(BuildCommandOnly.java:36)
	at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.java:104)
	at org.gradle.launcher.daemon.server.exec.WatchForDisconnection.execute(WatchForDisconnection.java:37)
	at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.java:104)
	at org.gradle.launcher.daemon.server.exec.ResetDeprecationLogger.execute(ResetDeprecationLogger.java:26)
	at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.java:104)
	at org.gradle.launcher.daemon.server.exec.RequestStopIfSingleUsedDaemon.execute(RequestStopIfSingleUsedDaemon.java:34)
	at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.java:104)
	at org.gradle.launcher.daemon.server.exec.ForwardClientInput$2.call(ForwardClientInput.java:74)
	at org.gradle.launcher.daemon.server.exec.ForwardClientInput$2.call(ForwardClientInput.java:72)
	at org.gradle.util.Swapper.swap(Swapper.java:38)
	at org.gradle.launcher.daemon.server.exec.ForwardClientInput.execute(ForwardClientInput.java:72)
	at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.java:104)
	at org.gradle.launcher.daemon.server.exec.LogAndCheckHealth.execute(LogAndCheckHealth.java:55)
	at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.java:104)
	at org.gradle.launcher.daemon.server.exec.LogToClient.doBuild(LogToClient.java:62)
	at org.gradle.launcher.daemon.server.exec.BuildCommandOnly.execute(BuildCommandOnly.java:36)
	at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.java:104)
	at org.gradle.launcher.daemon.server.exec.EstablishBuildEnvironment.doBuild(EstablishBuildEnvironment.java:81)
	at org.gradle.launcher.daemon.server.exec.BuildCommandOnly.execute(BuildCommandOnly.java:36)
	at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.java:104)
	at org.gradle.launcher.daemon.server.exec.StartBuildOrRespondWithBusy$1.run(StartBuildOrRespondWithBusy.java:50)
	at org.gradle.launcher.daemon.server.DaemonStateCoordinator$1.run(DaemonStateCoordinator.java:295)
	at org.gradle.internal.concurrent.ExecutorPolicy$CatchAndRecordFailures.onExecute(ExecutorPolicy.java:63)
	at org.gradle.internal.concurrent.ManagedExecutorImpl$1.run(ManagedExecutorImpl.java:46)
	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
	at org.gradle.internal.concurrent.ThreadFactoryImpl$ManagedThreadRunnable.run(ThreadFactoryImpl.java:55)
	at java.lang.Thread.run(Thread.java:745)
Caused by: org.gradle.api.tasks.TaskExecutionException: Execution failed for task ':byteowls-capacitor-filesharer:compileReleaseJavaWithJavac'.
	at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.execute(ExecuteActionsTaskExecuter.java:95)
	at org.gradle.api.internal.tasks.execution.ResolveTaskOutputCachingStateExecuter.execute(ResolveTaskOutputCachingStateExecuter.java:91)
	at org.gradle.api.internal.tasks.execution.ValidatingTaskExecuter.execute(ValidatingTaskExecuter.java:57)
	at org.gradle.api.internal.tasks.execution.SkipEmptySourceFilesTaskExecuter.execute(SkipEmptySourceFilesTaskExecuter.java:119)
	at org.gradle.api.internal.tasks.execution.ResolvePreviousStateExecuter.execute(ResolvePreviousStateExecuter.java:43)
	at org.gradle.api.internal.tasks.execution.CleanupStaleOutputsExecuter.execute(CleanupStaleOutputsExecuter.java:93)
	at org.gradle.api.internal.tasks.execution.FinalizePropertiesTaskExecuter.execute(FinalizePropertiesTaskExecuter.java:45)
	at org.gradle.api.internal.tasks.execution.ResolveTaskArtifactStateTaskExecuter.execute(ResolveTaskArtifactStateTaskExecuter.java:94)
	at org.gradle.api.internal.tasks.execution.SkipTaskWithNoActionsExecuter.execute(SkipTaskWithNoActionsExecuter.java:56)
	at org.gradle.api.internal.tasks.execution.SkipOnlyIfTaskExecuter.execute(SkipOnlyIfTaskExecuter.java:55)
	at org.gradle.api.internal.tasks.execution.CatchExceptionTaskExecuter.execute(CatchExceptionTaskExecuter.java:36)
	at org.gradle.api.internal.tasks.execution.EventFiringTaskExecuter$1.executeTask(EventFiringTaskExecuter.java:67)
	at org.gradle.api.internal.tasks.execution.EventFiringTaskExecuter$1.call(EventFiringTaskExecuter.java:52)
	at org.gradle.api.internal.tasks.execution.EventFiringTaskExecuter$1.call(EventFiringTaskExecuter.java:49)
	at org.gradle.internal.operations.DefaultBuildOperationExecutor$CallableBuildOperationWorker.execute(DefaultBuildOperationExecutor.java:315)
	at org.gradle.internal.operations.DefaultBuildOperationExecutor$CallableBuildOperationWorker.execute(DefaultBuildOperationExecutor.java:305)
	at org.gradle.internal.operations.DefaultBuildOperationExecutor.execute(DefaultBuildOperationExecutor.java:175)
	at org.gradle.internal.operations.DefaultBuildOperationExecutor.call(DefaultBuildOperationExecutor.java:101)
	at org.gradle.internal.operations.DelegatingBuildOperationExecutor.call(DelegatingBuildOperationExecutor.java:36)
	at org.gradle.api.internal.tasks.execution.EventFiringTaskExecuter.execute(EventFiringTaskExecuter.java:49)
	at org.gradle.execution.plan.LocalTaskNodeExecutor.execute(LocalTaskNodeExecutor.java:43)
	at org.gradle.execution.taskgraph.DefaultTaskExecutionGraph$InvokeNodeExecutorsAction.execute(DefaultTaskExecutionGraph.java:355)
	at org.gradle.execution.taskgraph.DefaultTaskExecutionGraph$InvokeNodeExecutorsAction.execute(DefaultTaskExecutionGraph.java:343)
	at org.gradle.execution.taskgraph.DefaultTaskExecutionGraph$BuildOperationAwareExecutionAction.execute(DefaultTaskExecutionGraph.java:336)
	at org.gradle.execution.taskgraph.DefaultTaskExecutionGraph$BuildOperationAwareExecutionAction.execute(DefaultTaskExecutionGraph.java:322)
	at org.gradle.execution.plan.DefaultPlanExecutor$ExecutorWorker$1.execute(DefaultPlanExecutor.java:134)
	at org.gradle.execution.plan.DefaultPlanExecutor$ExecutorWorker$1.execute(DefaultPlanExecutor.java:129)
	at org.gradle.execution.plan.DefaultPlanExecutor$ExecutorWorker.execute(DefaultPlanExecutor.java:202)
	at org.gradle.execution.plan.DefaultPlanExecutor$ExecutorWorker.executeNextNode(DefaultPlanExecutor.java:193)
	at org.gradle.execution.plan.DefaultPlanExecutor$ExecutorWorker.run(DefaultPlanExecutor.java:129)
	... 6 more
Caused by: org.gradle.api.internal.tasks.compile.CompilationFailedException: Compilation failed; see the compiler error output for details.
	at org.gradle.api.internal.tasks.compile.JdkJavaCompiler.execute(JdkJavaCompiler.java:52)
	at org.gradle.api.internal.tasks.compile.JdkJavaCompiler.execute(JdkJavaCompiler.java:36)
	at org.gradle.api.internal.tasks.compile.NormalizingJavaCompiler.delegateAndHandleErrors(NormalizingJavaCompiler.java:100)
	at org.gradle.api.internal.tasks.compile.NormalizingJavaCompiler.execute(NormalizingJavaCompiler.java:52)
	at org.gradle.api.internal.tasks.compile.NormalizingJavaCompiler.execute(NormalizingJavaCompiler.java:38)
	at org.gradle.api.internal.tasks.compile.AnnotationProcessorDiscoveringCompiler.execute(AnnotationProcessorDiscoveringCompiler.java:51)
	at org.gradle.api.internal.tasks.compile.AnnotationProcessorDiscoveringCompiler.execute(AnnotationProcessorDiscoveringCompiler.java:37)
	at org.gradle.api.internal.tasks.compile.CleaningJavaCompilerSupport.execute(CleaningJavaCompilerSupport.java:39)
	at org.gradle.api.internal.tasks.compile.incremental.IncrementalCompilerFactory$2.execute(IncrementalCompilerFactory.java:110)
	at org.gradle.api.internal.tasks.compile.incremental.IncrementalCompilerFactory$2.execute(IncrementalCompilerFactory.java:106)
	at org.gradle.api.internal.tasks.compile.incremental.IncrementalResultStoringCompiler.execute(IncrementalResultStoringCompiler.java:59)
	at org.gradle.api.internal.tasks.compile.incremental.IncrementalResultStoringCompiler.execute(IncrementalResultStoringCompiler.java:43)
	at org.gradle.api.internal.tasks.compile.CompileJavaBuildOperationReportingCompiler$2.call(CompileJavaBuildOperationReportingCompiler.java:59)
	at org.gradle.api.internal.tasks.compile.CompileJavaBuildOperationReportingCompiler$2.call(CompileJavaBuildOperationReportingCompiler.java:51)
	at org.gradle.internal.operations.DefaultBuildOperationExecutor$CallableBuildOperationWorker.execute(DefaultBuildOperationExecutor.java:315)
	at org.gradle.internal.operations.DefaultBuildOperationExecutor$CallableBuildOperationWorker.execute(DefaultBuildOperationExecutor.java:305)
	at org.gradle.internal.operations.DefaultBuildOperationExecutor.execute(DefaultBuildOperationExecutor.java:175)
	at org.gradle.internal.operations.DefaultBuildOperationExecutor.call(DefaultBuildOperationExecutor.java:101)
	at org.gradle.internal.operations.DelegatingBuildOperationExecutor.call(DelegatingBuildOperationExecutor.java:36)
	at org.gradle.api.internal.tasks.compile.CompileJavaBuildOperationReportingCompiler.execute(CompileJavaBuildOperationReportingCompiler.java:51)
	at org.gradle.api.tasks.compile.JavaCompile.performCompilation(JavaCompile.java:154)
	at org.gradle.api.tasks.compile.JavaCompile.compile(JavaCompile.java:122)
	at com.android.build.gradle.tasks.AndroidJavaCompile.compile(AndroidJavaCompile.kt:214)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.lang.reflect.Method.invoke(Method.java:498)
	at org.gradle.internal.reflect.JavaMethod.invoke(JavaMethod.java:73)
	at org.gradle.api.internal.project.taskfactory.IncrementalTaskAction.doExecute(IncrementalTaskAction.java:47)
	at org.gradle.api.internal.project.taskfactory.StandardTaskAction.execute(StandardTaskAction.java:41)
	at org.gradle.api.internal.project.taskfactory.StandardTaskAction.execute(StandardTaskAction.java:28)
	at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter$2.run(ExecuteActionsTaskExecuter.java:284)
	at org.gradle.internal.operations.DefaultBuildOperationExecutor$RunnableBuildOperationWorker.execute(DefaultBuildOperationExecutor.java:301)
	at org.gradle.internal.operations.DefaultBuildOperationExecutor$RunnableBuildOperationWorker.execute(DefaultBuildOperationExecutor.java:293)
	at org.gradle.internal.operations.DefaultBuildOperationExecutor.execute(DefaultBuildOperationExecutor.java:175)
	at org.gradle.internal.operations.DefaultBuildOperationExecutor.run(DefaultBuildOperationExecutor.java:91)
	at org.gradle.internal.operations.DelegatingBuildOperationExecutor.run(DelegatingBuildOperationExecutor.java:31)
	at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.executeAction(ExecuteActionsTaskExecuter.java:273)
	at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.executeActions(ExecuteActionsTaskExecuter.java:258)
	at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.access$200(ExecuteActionsTaskExecuter.java:67)
	at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter$TaskExecution.execute(ExecuteActionsTaskExecuter.java:145)
	at org.gradle.internal.execution.impl.steps.ExecuteStep.execute(ExecuteStep.java:49)
	at org.gradle.internal.execution.impl.steps.CancelExecutionStep.execute(CancelExecutionStep.java:34)
	at org.gradle.internal.execution.impl.steps.TimeoutStep.executeWithoutTimeout(TimeoutStep.java:69)
	at org.gradle.internal.execution.impl.steps.TimeoutStep.execute(TimeoutStep.java:49)
	at org.gradle.internal.execution.impl.steps.CatchExceptionStep.execute(CatchExceptionStep.java:33)
	at org.gradle.internal.execution.impl.steps.CreateOutputsStep.execute(CreateOutputsStep.java:50)
	at org.gradle.internal.execution.impl.steps.SnapshotOutputStep.execute(SnapshotOutputStep.java:43)
	at org.gradle.internal.execution.impl.steps.SnapshotOutputStep.execute(SnapshotOutputStep.java:29)
	at org.gradle.internal.execution.impl.steps.CacheStep.executeWithoutCache(CacheStep.java:134)
	at org.gradle.internal.execution.impl.steps.CacheStep.lambda$execute$3(CacheStep.java:83)
	at java.util.Optional.orElseGet(Optional.java:267)
	at org.gradle.internal.execution.impl.steps.CacheStep.execute(CacheStep.java:82)
	at org.gradle.internal.execution.impl.steps.CacheStep.execute(CacheStep.java:36)
	at org.gradle.internal.execution.impl.steps.PrepareCachingStep.execute(PrepareCachingStep.java:33)
	at org.gradle.internal.execution.impl.steps.StoreSnapshotsStep.execute(StoreSnapshotsStep.java:38)
	at org.gradle.internal.execution.impl.steps.StoreSnapshotsStep.execute(StoreSnapshotsStep.java:23)
	at org.gradle.internal.execution.impl.steps.SkipUpToDateStep.executeBecause(SkipUpToDateStep.java:96)
	at org.gradle.internal.execution.impl.steps.SkipUpToDateStep.lambda$execute$0(SkipUpToDateStep.java:89)
	at java.util.Optional.map(Optional.java:215)
	at org.gradle.internal.execution.impl.steps.SkipUpToDateStep.execute(SkipUpToDateStep.java:52)
	at org.gradle.internal.execution.impl.steps.SkipUpToDateStep.execute(SkipUpToDateStep.java:36)
	at org.gradle.internal.execution.impl.DefaultWorkExecutor.execute(DefaultWorkExecutor.java:34)
	at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.execute(ExecuteActionsTaskExecuter.java:91)
	... 35 more


I have it in the MainActiviy.java:

package foo.bar.app

import android.os.Bundle;

import com.getcapacitor.BridgeActivity;
import com.getcapacitor.Plugin;

import java.util.ArrayList;

public class MainActivity extends BridgeActivity {
  @Override
  public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    // Initializes the Bridge
    this.init(savedInstanceState, new ArrayList<Class<? extends Plugin>>() {{
      // Additional plugins you've installed go here
      // Ex: add(TotallyAwesomePlugin.class);
      add(FileSharerPlugin.class);
    }});
  }
}

@moberwasserlechner

Error when sharing images on Android

Hi, we would appreciate any guidance on below issue:

When trying to use the plugin to share/download images on android, we always get the below error message:

java.lang.SecurityException: Permission Denial: reading com.byteowls.capacitor.filesharer.FileSharerProvider URI content://com.xxx.app.filesharer.fileprovider/capfilesharer/share.png from pid=9439, uid=1000 requires the provider to be exported, or grantUriPermission()

We made the below attempts to fix it
1: Adjusting the configurations in manifestxml and paths, but it wasn't successful.
2: Added active permission acquisition with getContext().grantUriPermission(getContext().getPackageName(), contentUri, Intent.FLAG_GRANT_WRITE_URI_PERMISSION | Intent.FLAG_GRANT_READ_URI_PERMISSION); but it wasn't successful.
3: The source code uses startActivity(Intent.createChooser(sendIntent, title)). If changed to startActivity(sendIntent), the error won't occur.

how to set language for app

I want to set language for my app,how to config share item like:

FileSharer.share({
filename: "test.pdf",
contentType: "application/pdf",
// If you want to save base64:
base64Data: "...",
// If you want to save a file from a path:
path: "../../file.pdf",
}).then(() => {
// do sth
}).catch(error => {
console.error("File sharing failed", error.message);
});

Exception on iPad when presenting share dialog

Terminating app due to uncaught exception 'NSGenericException', reason: 'Your application has presented a UIActivityViewController (<UIActivityViewController: 0x7fc8120f2800>). In its current trait environment, the modalPresentationStyle of a UIActivityViewController with this style is UIModalPresentationPopover. You must provide location information for this popover through the view controller's popoverPresentationController. You must provide either a sourceView and sourceRect or a barButtonItem.  If this information is not known when you present the view controller, you may provide it in the UIPopoverPresentationControllerDelegate method -prepareForPopoverPresentation.'
*** First throw call stack:
(
	0   CoreFoundation                      0x00000001115f41bb __exceptionPreprocess + 331
	1   libobjc.A.dylib                     0x000000010f83d735 objc_exception_throw + 48
	2   UIKitCore                           0x00000001171f9ed1 -[UIPopoverPresentationController presentationTransitionWillBegin] + 3168
	3   UIKitCore                           0x000000011720387b __71-[UIPresentationController _initViewHierarchyForPresentationSuperview:]_block_invoke + 2495
	4   UIKitCore                           0x0000000117200e6b __56-[UIPresentationController runTransitionForCurrentState]_block_invoke + 468
	5   UIKitCore                           0x00000001179110d2 _runAfterCACommitDeferredBlocks + 318
	6   UIKitCore                           0x00000001178ffb2c _cleanUpAfterCAFlushAndRunDeferredBlocks + 384
	7   UIKitCore                           0x000000011792eefc _afterCACommitHandler + 135
	8   CoreFoundation                      0x0000000111558c27 __CFRUNLOOP_IS_CALLING_OUT_TO_AN_OBSERVER_CALLBACK_FUNCTION__ + 23
	9   CoreFoundation                      0x00000001115530be __CFRunLoopDoObservers + 430
	10  CoreFoundation                      0x0000000111553751 __CFRunLoopRun + 1537
	11  CoreFoundation                      0x0000000111552e11 CFRunLoopRunSpecific + 625
	12  GraphicsServices                    0x0000000116b5c1dd GSEventRunModal + 62
	13  UIKitCore                           0x000000011790581d UIApplicationMain + 140
	14  App                                 0x000000010e8a1d60 main + 48
	15  libdyld.dylib                       0x0000000112f64575 start + 1
)

package com.byteowls.capacitor.filesharer.FileSharerPlugin does not exist

Capacitor version:

Latest Dependencies:

  @capacitor/cli: 2.4.5
  @capacitor/core: 2.4.5
  @capacitor/android: 2.4.5
  @capacitor/electron: 2.4.5
  @capacitor/ios: 2.4.5

Installed Dependencies:

  @capacitor/ios not installed
  @capacitor/cli 2.4.2
  @capacitor/core 2.4.2
  @capacitor/android 2.4.4
  @capacitor/electron not installed

Affected Platform(s):

  • Android

Current Behavior

On trying to register plugin in Android at com.companyname.appname.MainActivity#onCreate, importing the plugin says that the plugin is not found

Expected Behavior

I would expect the plugin to register in MainActivity

Sample Code or Sample Application Repo

...
import com.byteowls.capacitor.filesharer.FileSharerPlugin;

public class MainActivity extends BridgeActivity {
  @Override
  public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    // Initializes the Bridge
    this.init(savedInstanceState, new ArrayList<Class<? extends Plugin>>() {{
      // Additional plugins you've installed go here
      // Ex: add(TotallyAwesomePlugin.class);
      add(FileSharerPlugin.class);
    }});
  }
}

Other Information

I do not have any expirence with Android Studio, any help with getting this plugin to work would be appreciated

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.