La solución a la actualización apk por encima de android8.0 no aparece en la interfaz de instalación.

     El código escrito antes de actualizar el apk se adaptó a la versión de android 7.0. Después de que la descarga de android 8.0 y android 9.0 se realizó correctamente, la pantalla parpadeó durante un tiempo y no saltó a la interfaz de instalación del sistema. Luego verifique el información y saber que android8.0 ha añadido Las nuevas medidas de seguridad no permiten la instalación de aplicaciones que no han sido verificadas por Google Play , por lo que tenemos que adaptarnos a los sistemas 8.0 y 9.0.

El primer paso es escribir permisos en el archivo xml

  • Agregue los siguientes permisos al archivo de manifiesto:
<uses-permission android:name="android.permission.REQUEST_INSTALL_PACKAGES"/> 

Se descubrió que no servía de nada Resultó que no había permiso para instalar aplicaciones desconocidas.

Determinar si ha obtenido permiso para instalar aplicaciones desconocidas 

En la clase PackageManager en 8.0, se agrega el método canRequestPackageInstalls() para comprobar si se ha obtenido la instalación de aplicaciones desconocidas.

if (Build.VERSION.SDK_INT>=26){ 
    boolean hasInstallPermission = isHasInstallPermissionWithO(mContext); 
    if (!hasInstallPermission) { 
        startInstallPermissionSettingActivity(mContext); 
        devolver; 
    }

}

@RequiresApi(api = Build.VERSION_CODES.O) 
private boolean isHasInstallPermissionWithO(Context context){ 
    if (context == null){ 
        return false; 
    } 
    return context.getPackageManager().canRequestPackageInstalls(); 
}

El método startInstallPermissionSettingActivity es: abrir la interfaz para configurar e instalar aplicaciones de fuentes desconocidas. Lo mejor es escribir el nombre del paquete de la aplicación y saltar directamente a la interfaz de permisos de la aplicación actual.

 

/** 
 * Abre la interfaz para configurar e instalar aplicaciones de fuentes desconocidas 
 * @param context 
 */ 
@RequiresApi(api = Build.VERSION_CODES.O) 
private void startInstallPermissionSettingActivity(Context context) { 
    if (context == null) { 
        return; 
    } 
    Intent intent = new Intent(); 
    //Obtenga el URI del paquete apk actual y configúrelo en el intent (este paso permite que la "interfaz de configuración de permisos de aplicación desconocida" solo muestre los elementos de configuración de la aplicación actual) 
    Uri packageURI = Uri .parse("paquete:" + context.getPackageName()); 
    intent.setData(packageURI); 
    //Establezca la acción de diferentes versiones para saltar a aplicaciones desconocidas 
    si (Build.VERSION.SDK_INT >= 26) { 
    } más { 
        //intent = nueva intención (android.provider .Settings.ACTION_MANAGE_UNKNOWN_APP_SOURCES,packageURI);
        intent.setAction(android.provider.Settings.ACTION_MANAGE_UNKNOWN_APP_SOURCES);
        intent.setAction(android.provider.Settings.ACTION_SECURITY_SETTINGS); 
    } 
    ((Activity) context).startActivity(intent); 
    Toast.makeText(mContext, "Active permisos de instalación de aplicaciones desconocidas", Toast.LENGTH_SHORT).show(); 
}

De esta manera, los teléfonos móviles superiores a 8.0 se adaptarán con éxito ~

 

Supongo que te gusta

Origin blog.csdn.net/qq_22576071/article/details/97010225
Recomendado
Clasificación