Я создал StringBuffer appNameAndPermissions = new StringBuffer();
, чтобы добавить всю информацию о приложениях и разрешениях.
Работает нормально. Я уже проверял это. Если у вас есть какие-либо проблемы, пожалуйста, дайте мне знать.
StringBuffer appNameAndPermissions = new StringBuffer();
PackageManager pm = getPackageManager();
List packages = pm.getInstalledApplications(PackageManager.GET_META_DATA);
for (ApplicationInfo applicationInfo : packages) {
Log.d("test", "App: " + applicationInfo.name + " Package: " + applicationInfo.packageName);
try {
PackageInfo packageInfo = pm.getPackageInfo(applicationInfo.packageName, PackageManager.GET_PERMISSIONS);
appNameAndPermissions.append(packageInfo.packageName+"*******:\n");
//Get Permissions
String[] requestedPermissions = packageInfo.requestedPermissions;
if(requestedPermissions != null) {
for (int i = 0; i < requestedPermissions.length; i++) {
Log.d("test", requestedPermissions[i]);
appNameAndPermissions.append(requestedPermissions[i]+"\n");
}
appNameAndPermissions.append("\n");
} catch (NameNotFoundException e) {
e.printStackTrace();
}
Источник и другие ответы здесь [ 119]
Когда клиент отправляет АВАРИЙНОЕ ПРЕКРАЩЕНИЕ РАБОТЫ, никакие транзакции не откатываются. Для предотвращения этого поведения, мы должны использовать SET_XACT_ABORT НА https://docs.microsoft.com/en-us/sql/t-sql/statements/set-xact-abort-transact-sql? view=sql-server-ver15
Я не уверен, но когда мы имеем, выполняются, испытывают таймаут, или команда испытывают таймаут, клиент отправляет, "АВАРИЙНОЕ ПРЕКРАЩЕНИЕ РАБОТЫ" к SQL Server затем просто отказывается от обработки запроса. Никакая транзакция не откатывается, никакие блокировки не выпущены. для решения этой проблемы, я Удаляю транзакцию в Хранимой процедуре и использую Транзакцию SQL в моем.Net Code To, управляют sqlException