Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/218.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/design-patterns/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 使用ContentProvider打开文件时android.content.ActivityNotFoundException_Java_Android_Android Intent_Android Contentprovider - Fatal编程技术网

Java 使用ContentProvider打开文件时android.content.ActivityNotFoundException

Java 使用ContentProvider打开文件时android.content.ActivityNotFoundException,java,android,android-intent,android-contentprovider,Java,Android,Android Intent,Android Contentprovider,我正在尝试使用另一个应用程序打开一个私人文件。我为以下内容创建了ContentProvider。但我得到以下错误: 我在主要活动中的代码是: try { File newFile = new File("Sample.txt"); FileOutputStream fileOutputStream = openFileOutput(newFile.toString(), MainActivity.MODE_PRIVATE); } catch (Exception e) {

我正在尝试使用另一个应用程序打开一个私人文件。我为以下内容创建了ContentProvider。但我得到以下错误:

我在主要活动中的代码是:

try {
File newFile = new File("Sample.txt");
FileOutputStream fileOutputStream = openFileOutput(newFile.toString(), MainActivity.MODE_PRIVATE);
    } catch (Exception e) {
        Toast.makeText(MainActivity.this, "Failed", Toast.LENGTH_SHORT).show();
    }

    Uri uri = Uri.parse("content://com.android.contentprovider/" + this.getFilesDir().toString() + "/Sample.txt");

    Intent intent = new Intent();
    intent.setAction(android.content.Intent.ACTION_VIEW);
    intent.setDataAndType(uri, "/text*");
    startActivity(intent);
我的contentprovider文件:

 package com.android.contentprovider;

import java.io.File;
import java.io.FileNotFoundException;

import android.content.ContentProvider;
import android.content.ContentValues;
import android.database.Cursor;
import android.net.Uri;
import android.os.ParcelFileDescriptor;

public class MyProvider extends ContentProvider {

@Override
public ParcelFileDescriptor openFile(Uri uri, String mode) throws FileNotFoundException {
    File privateFile = new File(getContext().getFilesDir(), uri.getPath());
    return ParcelFileDescriptor.open(privateFile, ParcelFileDescriptor.MODE_READ_ONLY);
}

@Override
public int delete(Uri arg0, String arg1, String[] arg2) {
    return 0;
}

@Override
public String getType(Uri arg0) {
    return null;
}

@Override
public Uri insert(Uri arg0, ContentValues arg1) {
    return null;
}

@Override
public boolean onCreate() {
    return false;
}

@Override
public Cursor query(Uri arg0, String[] arg1, String arg2, String[] arg3,
        String arg4) {
    return null;
}

@Override
public int update(Uri arg0, ContentValues arg1, String arg2, String[] arg3) {
    return 0;
}
}

我在清单中添加了提供者

<provider 
        android:name=".MyProvider" 
        android:authorities="com.android.contentprovider" 
        android:exported="true" />

您尚未实现支持所需Uri和格式错误MIME类型的操作视图的活动。内容提供者不是一种活动。

我愚蠢的错误是/video*应该是video/*

仍然存在一些问题。 所以我使用了v4库中的文件提供程序


签出它

首先验证您的清单文件,是否正确提到了您的主要活动名称?然后,您的MainActivity通过activity类进行扩展。
<provider 
        android:name=".MyProvider" 
        android:authorities="com.android.contentprovider" 
        android:exported="true" />