2017-05-14 11 views
1

私はAndroidアプリケーションを開発中です。私のアプリケーションでは、MainActivityの最新のapkの新しいバージョンをチェックしています。アプリケーションを更新する必要がある場合は、Retrofitを使用してサーバーからapkファイルをダウンロードし、ダウンロードしたapkファイルをインストールするようにユーザーに求めます。すべてのダウンロードプロセスは問題なく完了しました。しかし、私はユーザーに促すことに問題があります。私はthis linkに続いた。Androidにapkファイルのインストールを促すメッセージが表示されない

これは私がコードを実行すると、それはこのエラーをスロー

public void promptToInstallDownloadedApk(String path) 
    { 
     Intent intent = new Intent(Intent.ACTION_VIEW); 
     intent.setDataAndType(Uri.fromFile(new File(path)), "application/com.football.waiyanhein.tonightfootballreport"); 
     intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 
     startActivity(intent); 
    } 

MainActivity

で を要求する方法です。

0.354 12750から12750/com.football.waiyanhein.tonightfootballreport E/AndroidRuntime:致命的な例外:メイン プロセス:com.football.waiyanhein.tonightfootballreport、PID:12750 android.content.ActivityNotFoundException:いいえアクティビティが処理されました インテント{act = android.intent.action.VIEW dat = file:///storage/emulated/0/Android/data/com.football.waiyanhein.tonightfootballreport/files/tonight_football_report.apk typ = application/com.football.waiyanhein.tonightfootballreport flg = 0x10000000} at android.app.Instrumentation.checkStartActivityResult android.app.Instrumentation.execStartActivity(Instrumentation.java:1512)で(Instrumentation.java:1798) android.app.Activity.startActivityForResult(Activity.java:3917)で でandroid.app.Activity.startActivityForResultで android.support.v4.app.BaseFragmentActivityJB.startActivityForResult android.support.v4.app.FragmentActivity.startActivityForResult(FragmentActivity.java:77)で(BaseFragmentActivityJB.java:48) ( Activity.java:3877) at android.suppor android.app.Activity.startActivity(Activity.java:4168)の と は、 com.football.waiyanhein.tonightfootballreport.MainActivity.promptToInstallDownloadedApk(MainActivity.java:912) でcom.football.waiyanhein.tonightfootballreport.MainActivity.writeApkDownloadResponseBodyToDisk(MainActivity.java:893) com.football.waiyanhein.tonightfootballreportで.MainActivity $ 15.onResponse(MainActivity.java:850) at アンドロイド.os.Handler.dispatchMessage(Handler.java:95) at(ハンドラー.java:95) (ハンドラー.java:95) android.os.Looper.loop(Looper.java:148) android.app.ActivityThread.main(ActivityThread.java:5417) at java.lang.reflect.Method.invoke(ネイティブメソッド) at com。 android.internal.os.ZygoteInit $ MethodAndArgsCaller.run(ZygoteInit.java:726) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616)05-14 04:19:18。359 679-1124/system_process W/ActivityManager:強制終了 終了アクティビティ com.football.waiyanhein.tonightfootballreport/.MainActivity 05-14 04:19:18.387 664-664 /? E/EGL_emulation:TID 664: eglCreateSyncKHR(1215):エラー0x3004(EGL_BAD_ATTRIBUTE)05-14 04:19:18.505は679から10967/system_process I/OpenGLRenderer: EGL、バージョン1.4

なぜできるの初期化私はプロンプトしませんか?私は "application/com.football.waiyanhein.tonightfootballreport"を昇進させるように設定しました。それが私のパッケージ名です。

私もこれを試しましたが、動作しません。

public void promptToInstallDownloadedApk(String path) 
    { 
     Intent promptInstall = new Intent(Intent.ACTION_VIEW) 
       .setDataAndType(Uri.parse(path), 
         "application/vnd.android.package-archive"); 
     startActivity(promptInstall); 
    } 
+0

、これはウルパッケージすることになっていませんパスに何か問題がありますか? – Yazan

答えて

1

最後の例が有効です。私はこのようにそれを使用しています:それは、このに `「アプリケーション/ vnd.android.package-アーカイブ」` 100%使用すること、そしてあなたが得たエラーを投稿する必要があり

File updatedApk = new File(Environment.getExternalStorageDirectory(), 
         "your_file_name"); 
Intent intent = new Intent(Intent.ACTION_VIEW); 
intent.setDataAndType(Uri.fromFile(updatedApk), 
     "application/vnd.android.package-archive"); 
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 
startActivity(intent); 
+0

はい。これはうまくいった。私はUri.fromFileを使用しました。ありがとう。 –

関連する問題