我已经写了一个文件内容提供商。 当我将其放入单个活动应用程序中时,它可以完美工作。 但是,当将它放入具有多个活动的应用程序中时,它将不再起作用。 我总是收到错误消息,指出文件路径无效。 内容提供者活动不是主要活动。 文件存储在沙箱文件文件夹中。


我会在这里更具体一些。 我有一个多项目蚀工作区。 主项目未实现内容提供者。 在该应用程序之外,我们希望为文件内容提供程序提供服务,该文件内容提供程序将pdf文档提供给Adobe Reader x。 下载文件并将其提供给内容提供者的应用程序部分是在单独的项目中实现的。 在清单文件中声明存在内容提供者。

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="xxxxxxxxx.documents"
    android:versionCode="1"
    android:versionName="1.0" >
    <uses-sdk android:minSdkVersion="12" />
    <application
        android:icon="@drawable/ic_launcher"
        android:label="@string/app_name" >
    <activity
        android:label="DocumentActivity"
        android:name=".DocumentActivity"
        android:theme="@android:style/Theme.Holo" >
    </activity>
    <provider
        android:authorities="xxxxxxxxx.DocumentProvider"
        android:enabled="true"
        android:exported="true"
        android:grantUriPermissions="true"
        android:name="xxxxxxxxx.DocumentProvider"
        android:syncable="false" />
</application>
<uses-permission android:name="android.permission.WRITE_INTERNAL_STORAGE" />

这样触发了意图(工作正常!):

    if(file.exists())
    {
        this.loadingIndicator.setVisibility(View.GONE);
        // Start Content Provider Intent
        Intent i = new Intent();
        i.setDataAndType(Uri.parse("content://xxxxxxxxx.DocumentProvider/" +        file.getPath()), "application/pdf");
        Log.d(TAG, "Loading of PDF Document finished!");
        startActivity(i);
    }

我还有一个演示项目,其中内容提供者已在主清单中注册。 这可以完美工作,并且所有文档都已加载。

内容提供程序本身未更改。 但是,永远不会调用该方法:公共类DocumentProvider扩展ContentProvider {private static final String TAG =“ DocumentProvider”;

public ParcelFileDescriptor openFile(Uri uri, String mode) throws    FileNotFoundException 
{
      File file = new File(uri.getPath());
      Log.d(TAG, file.getAbsolutePath());
      ParcelFileDescriptor parcel = ParcelFileDescriptor.open(file,    ParcelFileDescriptor.MODE_READ_ONLY);
      return parcel;
}

我更改了所有uri链接,通过在主应用程序项目中复制内容提供程序类来测试了不同的方法,但没有任何效果。 Adobe Reader X总是返回文件路径不正确。

  ask by Kay translate from so

本文未有回复,本站智能推荐:

关注微信公众号