Я использую openOptionsMenu()
, чтобы открывать меню в приложениях со специальным графическим интерфейсом - например, в приложениях, которые отображают только графику (полноэкранные приложения без панелей инструментов и т. Д.) При длительном нажатии на экран.
Я вижу, что раньше заставлял его работать на других приложениях, и я полагаю, что это было с помощью манифеста,
android:minSdkVersion="15"
android:targetSdkVersion="15"
Теперь я не могу сделать эту работу(код будет):
myButton.setOnLongClickListener(
new OnLongClickListener() {
@Override public boolean onLongClick(View v) {
openOptionsMenu();
return false;
}
}
);
Я думаю, что Android Studio использует неправильный SDK.Фактически,
значения, которые я поместил в Манифест («min» и «target» установлены в 15), переопределяются;
используемые значения должны быть такими же, как в build.gradle - и снова я устанавливаю "compile", "min" и "target" равными 15, но я не вижу приложениеработает правильно, и я думаю, что выбор SDK может не произойти;
при проверке созданного APK отсутствуют записи манифеста для SDK (minSdkVersion, targetSdkVersion).
Сборка .Файл gradle в соответствии с интерфейсом Android Studio показывает:
android {
compileSdkVersion 15
buildToolsVersion "28.0.2"
defaultConfig {
applicationId '[...AppID...]'
minSdkVersion 15
targetSdkVersion 15
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.txt'
}
}
productFlavors {
}
}
Как написано выше, файл AndroidManifest.xml в скомпилированном APK (после apktool -d
) не упоминает какой-либо выбор SDK.
Я ожидаю, что приложение, скомпилированное для SDK 15, откроет (очень необходимое) меню при вызове openOptionsMenu()
.То, что скомпилированное приложение теперь делает после отладки, это вместо этого использовать метод, который будет / закрывать / меню (явно сатанинское намерение).
РЕДАКТИРОВАТЬ: информация о конкретном случае палачества Google openOptionsMenu()
после некоторой версии SDK в функция openOptionsMenu не работает в ICS?