내 애플리케이션에서 다음을 수행하고 싶습니다. 먼저 로그인해야합니다. 그런 다음 로그인 한 후 내 신청서를 종료합니다. 그러나 그것은 백그라운드에서 실행 중입니다. 로그인 기록이 아직 유지됩니다. 그런 다음 파일 브라우저에서 파일을 선택해야합니다. 파일을 선택한 후 공유 옵션을 누릅니다. 그런 다음 파일에 대한 일부 작업을 수행 할 응용 프로그램을 선택합니다. 파일에 작업을 수행 한 후이를 캐시에 기록합니다. 그런 다음이 파일을 다른 적절한 응용 프로그램에서 열려고합니다. 나는 그들 모두를 할 수 있지만 getUriForFile 메소드를 호출하는 동안 문제가있다.Android resolveContentProvider가 null을 반환합니다.
Manifest에 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를 호출하면 null 포인터 예외가 발생합니다. 따라서 context.getPackageManager
은 null을 반환합니다. 그 당시에는 동시에 두 개의 응용 프로그램이 실행된다는 것을 기억하십시오. 자연스러운 흐름 (즉, 로그인 및 기본 활동)을 따른다. 다른 하나는 MainActivity에서 열립니다. context.getPackageManager
은 두 번째 실행중인 응용 프로그램에서 호출됩니다. 제발 도와주세요
아니요, 'context.getPackageManager'는'null '이 아닙니다. 만약 그렇다면, 다음 코드는'NullPointerException'을 던질 것입니다. 메소드'resolveContentProvider'는'null'를 리턴합니다. –
문자열 PACKAGE_NAME = getApplicationContext(). getPackageName(); – YUVRAJ
'PackageManager.GET_META_DATA'는 128이고 권한은 "com.app.firm.app"입니다. 왜 그것은 resolveContentProvider가 null을 반환할까요? 나는 그 정보 매개 변수가 그 라인 이후에 null이된다는 것을 알고 있습니다. – gunescelil