返回列表 发新帖

[求助问答] mt共存版分享到localsend失败

[复制链接]

203

主题

2127

回帖

8852

积分

硕士生

Rank: 6Rank: 6

金币
3612
好评
33
信誉
102
发表在  2026-5-15 16:21:49 来自手机  | 显示全部楼层 | 阅读模式  来自 天津
分享文件到localsend大概率失败
原版不会有这个问题,这个问题怎么解决
Process: org.localsend.localsend_app
PID: 21353
UID: 10237
Frozen: false
Flags: 0x38c8be44
Package: org.localsend.localsend_app v583 (1.17.0)
PID: 21353
Foreground: Yes
Process-Runtime: 99666591
Build: OPPO/PERM10/OP524F:13/TP1A.220905.001/R.ec00d1-12e8f-12e8e:user/release-keys
Loading-Progress: 1.0
Dropped-Count: 0

java.lang.RuntimeException: java.lang.reflect.InvocationTargetException
        at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:594)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1013)
Caused by: java.lang.reflect.InvocationTargetException
        at java.lang.reflect.Method.invoke(Native Method)
        at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:584)
        ... 1 more
Caused by: java.io.FileNotFoundException: No content provider: content://bin.mt.plus.canary.fp/storage/emulated/0/Download/app-release.apk
        at android.content.ContentResolver.openTypedAssetFileDescriptor(ContentResolver.java:2039)
        at android.content.ContentResolver.openAssetFileDescriptor(ContentResolver.java:1868)
        at android.content.ContentResolver.openInputStream(ContentResolver.java:1544)
        at g7.a.b(Unknown Source:212)
        at g7.a.a(Unknown Source:361)
        at g7.g.k(Unknown Source:13)
        at g7.g.m(Unknown Source:100)
        at g7.g.o(Unknown Source:47)
        at g7.g.b(Unknown Source:6)
        at io.flutter.embedding.engine.c$c.c(Unknown Source:18)
        at io.flutter.embedding.engine.c.b(Unknown Source:14)
        at io.flutter.embedding.android.e.x(Unknown Source:20)
        at io.flutter.embedding.android.d.onNewIntent(Unknown Source:13)
        at android.app.Activity.performNewIntent(Activity.java:8413)
        at android.app.Instrumentation.callActivityOnNewIntent(Instrumentation.java:1503)
        at android.app.Instrumentation.callActivityOnNewIntent(Instrumentation.java:1516)
        at android.app.ActivityThread.deliverNewIntents(ActivityThread.java:4050)
        at android.app.ActivityThread.handleNewIntent(ActivityThread.java:4057)
        at android.app.servertransaction.NewIntentItem.execute(NewIntentItem.java:56)
        at android.app.servertransaction.ActivityTransactionItem.execute(ActivityTransactionItem.java:45)
        at android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:135)
        at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:95)
        at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2466)
        at android.os.Handler.dispatchMessage(Handler.java:106)
        at android.os.Looper.loopOnce(Looper.java:240)
        at android.os.Looper.loop(Looper.java:351)
        at android.app.ActivityThread.main(ActivityThread.java:8380)
        ... 3 more
回复

使用道具 举报

203

主题

2127

回帖

8852

积分

硕士生

Rank: 6Rank: 6

金币
3612
好评
33
信誉
102
发表于 2026-5-15 16:22:39 来自手机  | 显示全部楼层  来自 天津
安卓12和更低版本似乎没有这个问题
回复

使用道具 举报

62

主题

653

回帖

2250

积分

大学生

Rank: 5Rank: 5

金币
1111
好评
23
信誉
40

MT论坛最佳新人考神

QQ
发表于 2026-5-16 11:03:44 | 显示全部楼层  来自 浙江
崩溃关键行:java.io.FileNotFoundException: No content provider:
content://bin.mt.plus.canary.fp/storage/emulated/0/Download/app-release.apk

bin.mt.plus.canary.fp 是 MT管理器共存版 (canary测试版) 的 FileProvider 授权名。原版MT是 bin.mt.plus.fp
根本原因
LocalSend 收到MT管理器分享过来的 content:// URI 后,去查 bin.mt.plus.canary.fp 这个 ContentProvider 时找不到提供者
这有几种可能:

MT共存版的 FileProvider 没有 android:exported="true" —— 其他APP无权访问
MT共存版的 FileProvider 没声明跨进程权限授予 —— 没有 grantUriPermissions="true"
MT共存版打包时改了包名但没改 manifestplaceholders —— provider authority 跟应用名对不上
LocalSend 没拿到 URI 的临时授权(FLAG_GRANT_READ_URI_PERMISSION 没传)
解决方案
方案A:用户侧最简单(推荐)
别用直接分享,改成"添加文件":

打开 LocalSend
点 "添加文件" 按钮(不是从MT点分享)
文件选择器里选 Download/app-release.apk
这样走的是系统 SAF (Storage Access Framework),不依赖MT的 FileProvider
方案B:改用原版MT管理器
共存版 (canary) 是测试构建,FileProvider 配置可能没修对。装原版MT (bin.mt.plus) 应该没这问题。

方案C:临时绕过——分享前先复制
在MT里长按文件 → 复制 → 粘贴到 /sdcard/Download/(确保不是软链接)
然后用LocalSend的"添加文件"选择 (但你已经在 Download 了,所以这步意义不大)
方案D(开发级):修复MT共存版的 manifest
反编译MT共存版APK,在 AndroidManifest.xml 里找:<provider
    android:name="..."
    android:authorities="bin.mt.plus.canary.fp"
    android:exported="false"     ← 改成 false 是对的
    android:grantUriPermissions="true" ← 必须有这行
/>
确保 grantUriPermissions="true" 存在。回编译装上就好
回复

使用道具 举报

发表回复

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

快速回复 返回顶部 返回列表