我想显示一个通知,当用户单击时安装一个APK文件。 我知道如何使用fileProvider本身,但是 service 上下文存在问题。
这是我的代码 清单:
<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>
filePaths:
<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()在服务中不可用。
如何从服务上下文授予权限?
谢谢大家。
答案 0 :(得分:0)
我发现了问题
我必须将此权限添加到清单中才能安装apk文件。
<uses-permission android:name="android.permission.REQUEST_INSTALL_PACKAGES" />