从服务上下文中使用 fileProvider

using fileProvider from service context

我想在用户点击安装 APK 文件时显示通知。 我知道如何使用 fileProvider 本身,但我对 service context.

有疑问

这是我的代码 清单:

<provider
        android:name="android.support.v4.content.FileProvider"
        android:authorities="com.company.app"
        android:exported="false"
        android:grantUriPermissions="true">
        <meta-data
            android:name="android.support.FILE_PROVIDER_PATHS"
            android:resource="@xml/filepaths" />
    </provider>

文件路径:

<paths>
    <external-path
        name="externalFiles"
        path="." />
</paths>

服务代码:

resultIntent = new Intent(Intent.ACTION_VIEW);
                        Uri uri;
                        File file = FileHelper.getApkFile(item.getLink());
                        if (Build.VERSION.SDK_INT >= 24) {
                            uri = FileProvider.getUriForFile(
                                    NotificationService.this,
                                    NotificationService.this.getApplicationContext().getPackageName(),
                                    file);
                            NotificationService.this.setResult(Activity.RESULT_OK,
                                    resultIntent);
                        } else {
                            uri = Uri.fromFile(file);
                        }


                        resultIntent.setDataAndType(uri, "application/vnd.android.package-archive");
                        resultIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);

如您所知,setResult() 在服务中不可用。

如何从服务上下文授予权限?

谢谢大家

我发现了问题

我必须将此权限添加到我的清单中才能安装 apk 文件。

    <uses-permission android:name="android.permission.REQUEST_INSTALL_PACKAGES" />