Instale programaticamente um apk no Android 7 / api24

Estou tentando fazer com que meu aplicativo instale automaticamente um apk. Isso funciona bem para API <24. Mas para 24, está falhando. O Android implementou segurança extra:

Para aplicativos direcionados ao Android 7.0, a estrutura do Android aplica a política da API StrictMode que proíbe a exposição de URIs file: // fora do aplicativo. Se uma intenção que contém um URI de arquivo sair do aplicativo, o aplicativo falhará com uma exceção FileUriExposedException.

Então eu tentei isso:

    Uri myuri;
    if (Build.VERSION.SDK_INT < Build.VERSION_CODES.N){
        myuri = Uri.parse("file://"+outapk);
    } else {
        File o = new File(outapk);
        myuri = FileProvider.getUriForFile(con, con.getApplicationContext().getPackageName() + ".provider", o);
    }
    Intent promptInstall = new Intent(Intent.ACTION_VIEW).setDataAndType(myuri,"application/vnd.android.package-archive");
    con.startActivity(promptInstall);

mas obtenha uma exceção fatal:

com.android.packageinstaller "Caused by: java.lang.SecurityException: Permission Denial: opening provider android.support.v4.content.FileProvider from ProcessRecord{b42ee8a 6826:com.android.packageinstaller/u0a15} (pid=6826, uid=10015) that is not exported from uid 10066". 

Eu tenho export = true no meu manifesto.

O problema parece ser que o instalador do pacote não pode usar um conteúdo: // uri.

Existem maneiras de permitir que um aplicativo instale programaticamente um apk com api24?

questionAnswers(6)

yourAnswerToTheQuestion