私は、アプリのインストールと更新にgoogle playを使用しないように、プライベート循環用の小さなアプリケーションを実行しています。
MainActivityでは、APIを介してアプリの更新が見つかったかどうかを確認します。更新によってアプリが見つかった場合は、更新されたapkファイルをSDカードのダウンロードフォルダーにダウンロードし、次の方法でインストールします。
intent.setDataAndType(Uri.fromFile(new File(destination)), "application/vnd.android.package-archive");
正常に動作しますが、私の問題は、ユーザーがダウンロードフォルダーにapkファイルを取得できることです。そのため、ファイルを/data/data/com.xxx.aaaにダウンロードすることにしました。このアイデアでは、ファイルを/data...パスにダウンロードします。しかし、apkファイルをインストールできませんでした。download folder
次のコードでapkファイルがに存在することを確認します。
if(new File(destination).exists()){
// apk file is present into download folder.
}
以下のように解析エラーを示す私のメソッド:
私の質問は:
/ data ....パスから更新されたapkファイルをインストールするにはどうすればよいですか?
私はroot特権がapkをインストールするための問題だと思います。
私を助けてください。
編集された質問:- アプリケーションにrootアクセスを取得するには、次のコマンドを実行します。
try {
Runtime.getRuntime().exec("su");
}
このコマンドを実行した後、/ data / data/com.xxx.aaaパスを一覧表示できます。ダウンロードしたapkファイルがここに表示されていることを確認しました。
コメントで述べられているように、apkをインストールするには、さまざまなオプションでmountコマンドを実行しますが、運がありません。図に示すように、解析エラーが発生します。
私は次の方法でマウントを試しました :
1) mount -o rw,remount -t yaffs2 /dev/block/mtdblock3 /system
2) mount -o rw,remount -t yaffs2 /data/data.com.xxx.aaa/appinfo.apk
3) mount
4) mount /system
/ data / data/....パスをマウントする正しい方法がわかりません。/ data / data/....パスをマウントする方法。
私を助けてください。