私のアプリケーションでは次のようにしたいと思います。まずログインする必要があります。その後、ログイン後、私は自分のアプリケーションを終了します。しかし、それはバックグラウンドで実行されています。ログイン・レコードはまだ保持されています。次に、ファイルブラウザからファイルを選択する必要があります。ファイルを選択した後、共有オプションを押します。次に、私はファイルに対していくつかの操作を行うために自分のアプリケーションを選択します。ファイルを操作した後、それをキャッシュに記録します。次に、このファイルを他の適切なアプリケーションで開く必要があります。私はそれらのすべてを行うことができますが、getUriForFileメソッドを呼び出す際に問題があります。Android resolveContentProviderがnullを返す
私はfileProviderを追加しました。私は次のコードしているfile_paths.xmlで
<activity
android:name=".MainActivity"
android:label="@string/app_name">
<provider
android:name="android.support.v4.content.FileProvider"
android:authorities="${applicationId}.share"
android:exported="false"
android:grantUriPermissions="true">
<meta-data
android:name="android.support.FILE_PROVIDER_PATHS"
android:resource="@xml/file_paths" />
</provider>
<!--Normal way opener -->
<intent-filter android:label="appName">
<action android:name="android.intent.action.MAIN" />
</intent-filter>
<!--From share options opener -->
<intent-filter>
<action android:name="android.intent.action.SEND" />
<action android:name="android.intent.action.SEND_MULTIPLE" />
<category android:name="android.intent.category.DEFAULT" />
<data android:mimeType="*/*" />
</intent-filter>
</activity>
:
<?xml version="1.0" encoding="utf-8"?>
<paths xmlns:android="http://schemas.android.com/apk/res/android">
<cache-path name="cache_docs" path="data/data/com.app.firm.app/cache" />
</paths>
を私はFileProvider.javaファイルを開きました。私はエラーが発生します:
final ProviderInfo info = context.getPackageManager()
.resolveContentProvider(authority, PackageManager.GET_META_DATA);
final XmlResourceParser in = info.loadXmlMetaData(
context.getPackageManager(), META_DATA_FILE_PROVIDER_PATHS);
if (in == null) {
throw new IllegalArgumentException(
"Missing " + META_DATA_FILE_PROVIDER_PATHS + " meta-data");
}
infoパラメータがnullです。したがって、プログラムがinfo.loadXmlMetaDataを呼び出すと、ヌルポインタ例外が発生します。したがってcontext.getPackageManager
はnullを返します。その時私は同時に2つのアプリケーションを実行していることを忘れないでください。自然流れ(すなわち、ログインとメインアクティビティ)に従います。もう一つはMainActivityからちょうど開きます。 context.getPackageManager
は、2番目に実行中のアプリケーションから呼び出されます。助けてください
いいえ、 'context.getPackageManager'は' null'ではありません。もしそうであれば、次のコードは 'NullPointerException'を投げます。メソッド 'resolveContentProvider'は' null'を返します。 –
文字列PACKAGE_NAME = getApplicationContext()。getPackageName(); – YUVRAJ
'PackageManager.GET_META_DATA'は128であり、権限は「com.app.firm.app」です。それはなぜresolveContentProviderはnullを返しますか?私は、その行の後にinfoパラメータがnullになることを知っています。 – gunescelil