前提・実現したいこと
実行中の自作アプリから、パッケージインストーラを呼んで自身を更新をしたい。
発生している問題・エラーメッセージ
StartActivityしたら、以下メッセージのダイアログが表示され、
インストール画面が表示されない。
パッケージの解析中に問題が発生しました。
尚、ファイルアプリからapkをタップすると、インストール画面が表示され、
インストールできることは確認しています。
質問
おそらく、apkが見つけられていないのではないかと思っていて、
以下URL等を参考にしましたが、解決策が見つけられませんでした。
https://azunobu.hatenablog.com/entry/2019/06/27/120908
https://codechacha.com/ja/how-to-install-and-uninstall-app-in-android/
丸投げになるかもしれませんが、これ以上何をしたらいいのか分からず、
・設定もれ
・パス指定ミス
等、間違っている箇所があれば指摘いただけると幸いです。
該当のソースコード
AndroidManifest.xml
1 <application android:label="hoge"> 2 <provider android:name="androidx.core.content.FileProvider" android:authorities="${applicationId}.fileprovider" android:exported="false" android:grantUriPermissions="true"> 3 <meta-data android:name="android.support.FILE_PROVIDER_PATHS" android:resource="@xml/filepaths" /> 4 </provider> 5 </application> 6 <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" /> 7 <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> 8 <uses-permission android:name="android.permission.WAKE_LOCK" /> 9 <uses-permission android:name="android.permission.REQUEST_IGNORE_BATTERY_OPTIMIZATIONS" /> 10 <uses-permission android:name="android.permission.WRITE_SETTINGS" /> 11 <uses-permission android:name="com.hogeLibrary.USB_PERMISSION" /> 12 <uses-permission android:name="android.permission.BLUETOOTH" /> 13 <uses-permission android:name="android.permission.BLUETOOTH_ADMIN" /> 14 <uses-permission android:name="android.permission.READ_PHONE_STATE" /> 15 <uses-permission android:name="android.permission.READ_PRIVILEGED_PHONE_STATE" /> 16 <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" /> 17 <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" /> 18 <uses-permission android:name="android.permission.CHANGE_WIFI_STATE" /> 19 <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" /> 20 <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> 21 <uses-permission android:name="android.permission.REQUEST_INSTALL_PACKAGES" />
filepaths.xml
1<?xml version="1.0" encoding="utf-8" ?> 2<resources> 3 <files-path path="hoge/" name="hoge" /> 4</resources>
InstallHogeApk.cs(抜粋)
1 var sharedFile = System.IO.Path.Combine(activity.FilesDir.AbsolutePath, "hoge","hoge.apk"); 2 3 var apkUri = FileProvider.GetUriForFile(activity, $"{activity.PackageName}.fileprovider", new File(sharedFile)); 4 activity.GrantUriPermission($"{activity.PackageName}", apkUri, ActivityFlags.GrantReadUriPermission); 5 6 Intent intent = new Intent(Intent.ActionView); 7 8 intent.SetFlags(ActivityFlags.ClearTop | ActivityFlags.NewTask); 9 10 intent.SetDataAndType(apkUri, "application/vnd.android.package-archive"); 11 activity.StartActivity(intent);
hoge.apkは以下ディレクトリに存在しているのを確認済。
/data/data/${PackageName}/files/hoge/
Uriは以下
content://${PackageName}.fileprovider/hoge/hoge.apk
補足情報(FW/ツールのバージョンなど)
VisualStudio Enterprise 2019 Ver.16.11.7
Multi-Platform App(Uno platform | Xamarin)
Android 9.0 - API 28

回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2023/03/08 04:08
2023/03/09 09:54