NFLeo / Matisse-Kotlin

为方便定制UI 改自知乎Matisse 裁剪、UI修改。Kotlin、Androidx
Apache License 2.0
167 stars 22 forks source link

java.lang.IllegalArgumentException: Couldn't find meta-data for provider with authority com.unis.policecom.fileprovider #12

Closed RUANHAOANDROID closed 5 years ago

RUANHAOANDROID commented 5 years ago

在多模块中使用发生错误。

I/Toast: Show toast from OpPackageName:com.unis.policecom, PackageName:com.unis.policecom
W/Choreographer: OPTS_INPUT: First frame was drawed before optimized, so skip!
I/Timeline: Timeline: Activity_launch_request time:11967258 intent:Intent { cmp=com.unis.policecom/com.matisse.ui.activity.MatisseActivity }
W/ActivityThread: handleWindowVisibility: no activity for token android.os.BinderProxy@dc4b4a4
D/ViewContentFactory: initViewContentFetcherClass
I/ContentCatcher: ViewContentFetcher : ViewContentFetcher
D/ViewContentFactory: createInterceptor took 0ms
D/AndroidRuntime: Shutting down VM
E/AndroidRuntime: FATAL EXCEPTION: main
    Process: com.unis.policecom, PID: 18562
    java.lang.IllegalArgumentException: Couldn't find meta-data for provider with authority com.unis.policecom.fileprovider
        at androidx.core.content.FileProvider.parsePathStrategy(FileProvider.java:606)
        at androidx.core.content.FileProvider.getPathStrategy(FileProvider.java:579)
        at androidx.core.content.FileProvider.getUriForFile(FileProvider.java:417)
        at com.matisse.utils.MediaStoreCompat.dispatchCaptureIntent(MediaStoreCompat.kt:59)
        at com.matisse.ui.activity.MatisseActivity.capture(MatisseActivity.kt:123)
        at com.matisse.ui.adapter.AlbumMediaAdapter$onCreateViewHolder$1$1.onClick(AlbumMediaAdapter.kt:53)
        at android.view.View.performClick(View.java:6608)
        at android.view.View.performClickInternal(View.java:6585)
        at android.view.View.access$3100(View.java:785)
        at android.view.View$PerformClick.run(View.java:25921)
        at android.os.Handler.handleCallback(Handler.java:873)
        at android.os.Handler.dispatchMessage(Handler.java:99)
        at android.os.Looper.loop(Looper.java:201)
        at android.app.ActivityThread.main(ActivityThread.java:6806)
        at java.lang.reflect.Method.invoke(Native Method)
        at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:547)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:873)
D/CrashUtil: crash report saved in : /storage/emulated/0/Android/data/com.unis.policecom/files/crash
I/Process: Sending signal. PID: 18562 SIG: 9
Process 18562 terminated.
<?xml version="1.0" encoding="utf-8"?>
<paths>
    <external-path
        name="my_images"
        path="Pictures" />
</paths>
   Matisse.from(content)
            .choose(mimeType, true)
            .countable(false)
            .capture(true)
            .captureStrategy(
                CaptureStrategy(
                    true, content.packageName + ".fileprovider"
                )
            )
            .isCrop(isCrop)
            .cropStyle(CropImageView.Style.CIRCLE)
            .cropFocusWidthPx(UIUtils.dp2px(content, 250f).toInt())
            .cropFocusHeightPx(UIUtils.dp2px(content, 250f).toInt())
            .setStatusIsDark(false)
            .theme(R.style.CustomMatisseStyle)
            .maxSelectable(count)
            .thumbnailScale(0.8f)
            .gridExpectedSize(content.resources.getDimensionPixelSize(R.dimen.grid_expected_size))
            .restrictOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT)
            .imageEngine(Glide4Engine())
            .setOnSelectedListener(object : OnSelectedListener {
                override fun onSelected(uriList: List<Uri>, pathList: List<String>) {
                    // DO SOMETHING IMMEDIATELY HERE
                    Log.e("onSelected", "onSelected: pathList=$pathList")
                }
            })
            .setNoticeConsumer(object : Consumer<String> {
                override fun accept(params: String) {
                    showToast(params)
                }
            })
            .setOnCheckedListener(object : OnCheckedListener {
                override fun onCheck(isChecked: Boolean) {
                    // DO SOMETHING IMMEDIATELY HERE
                    Log.e("isChecked", "onCheck: isChecked=$isChecked")
                }
            })
            .forResult(ConstValue.REQUEST_CODE_CHOOSE)
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    package="com.unis.comon">

    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
    <uses-permission android:name="android.permission.ACCESS_WIFI_STATE"/>
    <uses-permission android:name="android.permission.INTERNET"/>
    <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>
    <uses-permission android:name="android.permission.VIBRATE" />
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
   <uses-permission android:name="android.permission.REQUEST_INSTALL_PACKAGES" />
    <uses-permission android:name="android.permission.REQUEST_DELETE_PACKAGES"/>
    <uses-permission android:name="android.permission.USE_FINGERPRINT" />
    <!-- 在sdcard中创建/删除文件的权限 -->
    <uses-permission
        android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS"
        tools:ignore="ProtectedPermissions" />
    <uses-permission android:name="android.permission.CAMERA" />

    <application>
        <activity android:name="com.unis.comon.qrcode.ScanActivity" />
        <provider
            android:name=".provider.PhotoProvider"
            android:authorities="${applicationId}.fileProvider"
            android:grantUriPermissions="true"
            android:exported="false">
            <meta-data
                android:name="android.support.FILE_PROVIDER_PATHS"
                android:resource="@xml/photo_path" />
        </provider>
    </application>
</manifest>
RUANHAOANDROID commented 5 years ago

找到问题了 fileprovider 、fileProvider 的大小写!

NFLeo commented 5 years ago

恩 必须保证一模一样