当前位置: 首页 > 知识库问答 >
问题:

非法参数异常:未能找到配置的根

拓拔俊艾
2023-03-14

我试图按照本指南共享从glide加载到imageview中的图像,它给了我一个非法参数异常。我已经把代码和stacktrace贴在下面了

维护性。xml

public class MainActivity extends AppCompatActivity {

    private EditText editText;
    private ShareActionProvider myShareActionProvider;
    //private Bitmap bitmap;
    private Uri uri;
    private Intent shareIntent;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        final ImageView imageView = (ImageView) findViewById(R.id.imageView);

        String hi = "http://37n98a43dqtb4bua9n28nidp.wpengine.netdna-cdn.com/wp-content/uploads/2016/09/MyFriendPikachu.jpg";

        Glide
                .with(this)
                .load(hi)
                .listener(new RequestListener<String, GlideDrawable>() {
                    @Override
                    public boolean onException(Exception e, String model, Target<GlideDrawable> target, boolean isFirstResource) {
                        return false;
                    }

                    @Override
                    public boolean onResourceReady(GlideDrawable resource, String model, Target<GlideDrawable> target, boolean isFromMemoryCache, boolean isFirstResource) {
                        prepareShareIntent(((GlideBitmapDrawable) resource).getBitmap());
                        attachShareIntentAction();
                        return false;
                    }
                })
                .placeholder(R.drawable.ic_action_name)
                .error(R.drawable.ic_img_error)
                .centerCrop()
                .into(imageView);
    }

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {

        getMenuInflater().inflate(R.menu.img_menu, menu);

        MenuItem item = menu.findItem(R.id.action_share);

        myShareActionProvider = (ShareActionProvider) MenuItemCompat.getActionProvider(item);
        attachShareIntentAction();

        return true;
    }

    @Override
    public boolean onOptionsItemSelected(MenuItem item) {

        int id = item.getItemId();

        return super.onOptionsItemSelected(item);


    }

    public void prepareShareIntent(Bitmap drawableImage) {

        Uri bmpUri = getBitmapFromDrawable(drawableImage);

        shareIntent = new Intent();

        shareIntent.setAction(Intent.ACTION_SEND);

        shareIntent.putExtra(Intent.EXTRA_STREAM, bmpUri);

        shareIntent.setType("image/*");

    }


    public void attachShareIntentAction() {

        if (myShareActionProvider != null && shareIntent != null)

            myShareActionProvider.setShareIntent(shareIntent);

    }


    public Uri getBitmapFromDrawable(Bitmap bmp) {


        Uri bmpUri = null;

        try {

            //also tried getExternalDir(Environment.DIRECTORY_PICTURES)
            File file = new File(Environment.getExternalStorageDirectory(), "images" + System.currentTimeMillis() + ".png");

            FileOutputStream out = new FileOutputStream(file);

            bmp.compress(Bitmap.CompressFormat.PNG, 90, out);

            out.close();


            bmpUri = FileProvider.getUriForFile(MainActivity.this, "com.example.imnobody.sampleprojectnetwork.fileprovider", file);  // use this version for API >= 24

            // **Note:** For API < 24, you may use bmpUri = Uri.fromFile(file);

        } catch (IOException e) {

            e.printStackTrace();

        }

        return bmpUri;

    }

}

Androidmanifest。xml

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.example.imnobody.sampleprojectnetwork">

    <uses-permission android:name="android.permission.INTERNET" />
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>

    <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />





    <application
        android:allowBackup="true"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:roundIcon="@mipmap/ic_launcher_round"
        android:supportsRtl="true"
        android:theme="@style/AppTheme">
        <activity android:name=".MainActivity">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
        <provider

            android:name="android.support.v4.content.FileProvider"

            android:authorities="com.example.imnobody.sampleprojectnetwork.fileprovider"

            android:exported="false"

            android:grantUriPermissions="true">

            <meta-data


                android:name="android.support.FILE_PROVIDER_PATHS"

                android:resource="@xml/fileprovider" />

        </provider>
    </application>

</manifest>

文件提供者。xml

<?xml version="1.0" encoding="utf-8"?>

<paths>

    <external-file-path

        name="images"

        path="Pictures"  />

</paths>

堆栈痕迹

JAVAlang.IllegalArgumentException:未能找到包含/storage/sdcard0/images1502651207040的配置根目录。Android的png。支持v4。所容纳之物FileProvider$SimplePathStrategy。android上的getUriForFile(FileProvider.java:711)。支持v4。所容纳之物文件提供者。com上的getUriForFile(FileProvider.java:400)。实例没人。sampleprojectnetwork。主要活动。com上的getBitmapFromDrawable(MainActivity.java:134)。实例没人。sampleprojectnetwork。主要活动。在com上准备ShareIntent(MainActivity.java:95)。实例没人。sampleprojectnetwork。主要活动1美元。com上的onResourceReady(MainActivity.java:59)。实例没人。sampleprojectnetwork。主要活动1美元。com上的onResourceReady(MainActivity.java:51)。邦普泰克。滑行要求一般要求。com上的onResourceReady(GenericRequest.java:522)。邦普泰克。滑行要求一般要求。com上的onResourceReady(GenericRequest.java:507)。邦普泰克。滑行负载发动机引擎作业。com上的handleResultOnMainThread(EngineJob.java:158)。邦普泰克。滑行负载发动机引擎作业。在com上访问$100(EngineJob.java:22)。邦普泰克。滑行负载发动机EngineJob$main线程回调。android上的handleMessage(EngineJob.java:202)。操作系统。处理程序。android上的dispatchMessage(Handler.java:106)。操作系统。活套。android上的loop(Looper.java:193)。应用程序。活动线程。java上的main(ActivityThread.java:5292)。朗。反思。方法java上的invokenactive(本机方法)。朗。反思。方法在com上调用(Method.java:515)。Android内部的操作系统。ZygoteInit$MethodandArgscaler。在com上运行(ZygoteInit.java:824)。Android内部的操作系统。合子体。dalvik的main(ZygoteInit.java:640)。系统本地人

共有2个答案

陈成济
2023-03-14

根据文件:

<代码>

表示外部存储区域根目录中的文件。此子目录的根路径与Environment返回的值相同。getExternalStorageDirectory()。

您正在从外部存储根目录(/storage/sdcard0)调用引用,但需要在/storage/sdcard0/Android/data/your处引用您的包根目录。包裹取而代之的是姓名/图片。

唐骏祥
2023-03-14

首先,在元数据中,将外部文件路径更改为外部文件路径,添加缺少的s

其次,/store/sdcard0/images1502651207040.png将不匹配修复的元数据。元数据期望您使用getExtranalFilesDir(),特别是下面的图片目录。你的道路不像那样。

 类似资料:
  • 又一个文件提供商失去了灵魂。。。我已经在这个问题上工作了一天多了,似乎我错过了一些重要的东西。任何帮助都将不胜感激! 我试图发送电子邮件附件使用文件提供商。 我的Androidanifest.xml部分: 文件路径。xml: 创建附件: 以及Uri创建: 其中是创建文件时在代码段中返回的值。 在Uri创建行上,我得到异常: 如留档(https://developer.android.com/ref

  • 我正在处理一个非常简单的point类,但我得到了一个错误,我无法确定字符串/双值问题发生的位置或如何修复它。 编辑 我忘记添加我正在接收的错误:

  • 问题内容: 我正在Ubuntu 16.04上使用最新版本的Elasticsearch,但在将数据放到上面时遇到了一个小问题。 这是我的json文档(相关部分) 这是当我尝试“ PUT http:// localhost:9200 / aws ” 时从ES返回的响应 在我看来,ES认为“ clockSpeed”是某种设置…?我希望使用动态映射来加快此过程,而不是先映射所有文档,然后将其导入ES。 有

  • 在Java jar上运行JUnit5测试并加载依赖项时,会出现警告 当我去看dumpstream时,它充满了评论,比如: 解决了依赖项加载问题,但未解决损坏的流。

  • 问题内容: 我试图从具有2个参数的表的数据库中获取数据,当我尝试执行此代码时,它给出错误:参数未设置。我认为这是一个小错误,但我找不到。问题可能出在2个参数,我以前从未使用过2个。谁能帮我? 这是错误 问题答案: 您只需要为Datum值提供第二个参数:

  • 我正试图为我的Xamarin编写一个内容提供商。Android应用。 我有我的ContentProvider类(./ContentProviders/SitesProvider.cs): 在我的Androidanifest.xml中,我在元素中添加了以下内容 当我尝试运行我的应用程序时,我收到以下错误消息: JAVAlang.RuntimeException:'无法获取提供程序com。沙马林。样品