2017-08-17 10 views
1

アンドロイド8のすべてのバージョンにapkをインストールする方法を書いており、アンドロイド8まで動作します。 APIのURIを取得するために8は、この方法APKをアンドロイド8(API 26)にプログラムでインストール

install_apk(File file) { 
     try { 
      if (file.exists()) { 
       String[] fileNameArray = file.getName().split(Pattern.quote(".")); 
       if (fileNameArray[fileNameArray.length - 1].equals("apk")) { 
        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) { 
         Uri downloaded_apk = getFileUri(context, file); 
         Intent intent = new Intent(Intent.ACTION_VIEW).setDataAndType(downloaded_apk, 
           "application/vnd.android.package-archive"); 
         intent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION); 
         context.startActivity(intent); 
        } else { 
         Intent intent = new Intent(Intent.ACTION_VIEW); 
         intent.setDataAndType(Uri.fromFile(file), 
           "application/vnd.android.package-archive"); 
         intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 
         context.startActivity(intent); 
        } 
       } 
      } 
     } catch (Exception e) { 
      e.printStackTrace(); 
     } 
    } 

と、このメソッドに応答しないアンドロイドのようです> = 23

Uri getFileUri(Context context, File file) { 
     return FileProvider.getUriForFile(context, 
       context.getApplicationContext().getPackageName() + ".HelperClasses.GenericFileProvider" 
       , file); 
    } 
+0

エラーが発生しますか?スタックトレースはありますか?どのように失敗していますか? – JoeHz

+0

私は別のapiのエミュレータを持っていて、すべてのことはapiの直前でOKです26 –

+0

logcatにエラーは表示されません –

答えて

4

あなたが新しい権限を追加する必要があります。

<uses-permission android:name="android.permission.REQUEST_INSTALL_PACKAGES"/> 
関連する問題