<application>
...
<provider
android:authorities="com.tencent.sample.fileprovider"
android:name="android.support.v4.content.FileProvider"
android:exported="false"
android:grantUriPermissions="true"
>
<meta-data
android:name="android.support.FILE_PROVIDER_PATHS"
android:resource="@xml/file_paths"/>
</provider>
...
</application>
// ${applicationId} 为你的应用包名
|
在res/xml目录下新增file_paths.xml文件,如果res目录下没有xml目录则需要新增一个xml目录,文件内容如下:
<?xml version="1.0" encoding="utf-8"?>
<paths>
<external-files-path name="opensdk_external" path="Images/tmp"/>
<root-path name="opensdk_root" path=""/>
</paths>
|
D、IUiListener添加onWarning回调, 如果authorities为空,sdk会回调这个接口,提醒开发者适配FileProvider
IUiListener qqShareListener = new DefaultUiListener() {
……
@Override
public void onWarning(int code) {
if (code == Constants.ERROR_NO_AUTHORITY) {
Util.toastMessage(QQShareActivity.this, "onWarning: 请授权手Q访问分享的文件的读取权限!");
}
}
};
|
E、常见问题
第三方应用把图片放到自己的专属目录里,然后以文件路径形式调用QQ互联SDK来向QQ分享。在 Android 11 上,QQ无法访问别的应用的专属目录,导致显示图片失败。
解决办法:QQ互联SDK 3.3.8版本支持通过FilePorvider分享文件到手Q。通过FilePorvider, 第三方应用可以赋予手Q读取分享的文件的权限。即便手Q在无SD卡权限的情况下,也可以访问第三方应用分享的图片。