質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.44%
XML

XMLは仕様の1つで、マークアップ言語群を構築するために使われています。

C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

Visual Studio

Microsoft Visual StudioはMicrosoftによる統合開発環境(IDE)です。多種多様なプログラミング言語に対応しています。

Android

Androidは、Google社が開発したスマートフォンやタブレットなど携帯端末向けのプラットフォームです。 カーネル・ミドルウェア・ユーザーインターフェイス・ウェブブラウザ・電話帳などのアプリケーションやソフトウェアをひとつにまとめて構成。 カーネル・ライブラリ・ランタイムはほとんどがC言語/C++、アプリケーションなどはJavaSEのサブセットとAndroid環境で書かれています。

Xamarin

Xamarin(ザマリン)は、iPhoneなどのiOSやAndroidで動作し、C# 言語を用いてアプリを開発できるクロスプラットフォーム開発環境です。Xamarin Studioと C# 言語を用いて、 iOS と Android の両方の開発を行うことができます。

Q&A

解決済

1回答

1065閲覧

[Uno Platform][Android][Xamarin]アプリからパッケージインストーラを呼びたい

退会済みユーザー

退会済みユーザー

総合スコア0

XML

XMLは仕様の1つで、マークアップ言語群を構築するために使われています。

C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

Visual Studio

Microsoft Visual StudioはMicrosoftによる統合開発環境(IDE)です。多種多様なプログラミング言語に対応しています。

Android

Androidは、Google社が開発したスマートフォンやタブレットなど携帯端末向けのプラットフォームです。 カーネル・ミドルウェア・ユーザーインターフェイス・ウェブブラウザ・電話帳などのアプリケーションやソフトウェアをひとつにまとめて構成。 カーネル・ライブラリ・ランタイムはほとんどがC言語/C++、アプリケーションなどはJavaSEのサブセットとAndroid環境で書かれています。

Xamarin

Xamarin(ザマリン)は、iPhoneなどのiOSやAndroidで動作し、C# 言語を用いてアプリを開発できるクロスプラットフォーム開発環境です。Xamarin Studioと C# 言語を用いて、 iOS と Android の両方の開発を行うことができます。

0グッド

1クリップ

投稿2022/01/27 11:24

前提・実現したいこと

実行中の自作アプリから、パッケージインストーラを呼んで自身を更新をしたい。

発生している問題・エラーメッセージ

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

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

投稿2022/01/28 02:46

編集2022/01/28 02:47
退会済みユーザー

退会済みユーザー

総合スコア0

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

Momotaro

2023/03/08 04:08

Javaですが、同様の現象で困っており、以下の通り質問させていただいていたところです。 https://teratail.com/questions/kbk41tdjf147u7 参考サイトも拝見させていただいて自分なりに試してみたのですがうまくいかず、どのように解決されたのか教えていただけないでしょうか。
Momotaro

2023/03/09 09:54

すみません、一応当初の通り Intent を使う方法で自己解決しました。 ただ気になるところもあるので、もし可能でしたら PackageInstaller を使う方法もご教授いただければと思います。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.44%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問