从服务上下文中使用 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" />
我想在用户点击安装 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" />