Facebook,Evernote,Pocket - 所有应用程序都会自动在Android 6.0上获得此权限,即使它们的目标是23(targetSdkVersion=23).
关于新的Marshmallow权限模型有很多文档.其中一个SYSTEM_ALERT_WINDOW被"提升"为"高于危险"的权限级别,因此需要特殊的用户干预才能授予应用程序这些权限.如果应用程序有targetSdkVersion22或更低,app会自动获得此权限(如果在清单中请求).
但是,我注意到一些获得此权限的应用程序,无需将用户发送到设置特殊页面的Draw over other apps权限.我看到Facebook,Evernote,Pocket - 也许还有更多.
任何人都知道在没有用户通过的情况下如何授予应用程序此权限Settings -> Apps -> Draw over other apps?
谢谢
android android-permissions target-sdk system-alert-window android-6.0-marshmallow
我在日志中收到此异常 -
java.lang.IndexOutOfBoundsException: Invalid item position 0(0). Item count:0
at android.support.v7.widget.RecyclerView$Recycler.getViewForPosition(RecyclerView.java:4622)
at android.support.v7.widget.RecyclerView$Recycler.getViewForPosition(RecyclerView.java:4617)
at com.jivemap.app.CustomizedViews.MyLinearLayoutManager.measureScrapChild(MyLinearLayoutManager.java:66)
at com.jivemap.app.CustomizedViews.MyLinearLayoutManager.onMeasure(MyLinearLayoutManager.java:30)
at android.support.v7.widget.RecyclerView.onMeasure(RecyclerView.java:2614)
at android.view.View.measure(View.java:15318)
at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:4816)
at android.widget.LinearLayout.measureChildBeforeLayout(LinearLayout.java:1413)
at android.widget.LinearLayout.measureHorizontal(LinearLayout.java:1061)
at android.widget.LinearLayout.onMeasure(LinearLayout.java:599)
at android.view.View.measure(View.java:15318)
at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:4816)
at android.widget.LinearLayout.measureChildBeforeLayout(LinearLayout.java:1413)
at android.widget.LinearLayout.measureVertical(LinearLayout.java:704)
at android.widget.LinearLayout.onMeasure(LinearLayout.java:597)
at android.view.View.measure(View.java:15318)
at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:4816)
at android.widget.LinearLayout.measureChildBeforeLayout(LinearLayout.java:1413)
at android.widget.LinearLayout.measureHorizontal(LinearLayout.java:1061)
at android.widget.LinearLayout.onMeasure(LinearLayout.java:599)
at android.view.View.measure(View.java:15318)
at android.widget.ListView.setupChild(ListView.java:1849)
at android.widget.ListView.makeAndAddView(ListView.java:1764)
at android.widget.ListView.fillSpecific(ListView.java:1320)
at android.widget.ListView.layoutChildren(ListView.java:1635)
at android.widget.AbsListView.onLayout(AbsListView.java:2141)
at android.view.View.layout(View.java:13874)
at android.view.ViewGroup.layout(ViewGroup.java:4364)
at android.support.v4.widget.SwipeRefreshLayout.onLayout(SwipeRefreshLayout.java:596)
at android.view.View.layout(View.java:13874)
at android.view.ViewGroup.layout(ViewGroup.java:4364)
at android.support.v4.view.ViewPager.onLayout(ViewPager.java:1695)
at android.view.View.layout(View.java:13874)
at android.view.ViewGroup.layout(ViewGroup.java:4364)
at android.widget.LinearLayout.setChildFrame(LinearLayout.java:1672)
at …Run Code Online (Sandbox Code Playgroud) android indexoutofboundsexception target-sdk android-recyclerview android-6.0-marshmallow
[Visual Studio 15.6.3,dotnet SDK 2.1.102]
最近,(可能在更新后)我追踪了一个dotnet构建错误,该错误正在显示包含外语资源的项目.错误消息如下:
C:\ Program Files\dotnet\sdk\2.1.102\Microsoft.Common.CurrentVersion.targets(3570,5):错误MSB4062:无法从程序集Microsoft加载"Microsoft.Build.Tasks.AL"任务. Build.Tasks.Core,Version = 15.1.0.0,Culture = neutral,PublicKeyToken = b03f5f7f11d50a3a.确认声明是否正确,程序集及其所有依赖项是否可用,以及该任务是否包含实现Microsoft.Build.Framework.ITask的公共类.
我可以提供重现此错误的步骤:
:
class Program
{
static void Main(string[] args)
{
var rm = new ResourceManager("DotNetBugTest.Messages", typeof(Program).Assembly);
var en = CultureInfo.CreateSpecificCulture("en-US");
var fr = CultureInfo.CreateSpecificCulture("fr-CA");
Console.WriteLine($@"en={rm.GetString("A", en)}");
Console.WriteLine($@"fr={rm.GetString("A", fr)}");
Console.ReadKey();
}
}
Run Code Online (Sandbox Code Playgroud)
这在Visual Studio中运行良好.输出:
en=English
fr=French
Run Code Online (Sandbox Code Playgroud)
但是,如果您尝试从命令行编译它:
dotnet build --configuration Debug
Run Code Online (Sandbox Code Playgroud)
你得到错误.
有人知道如何解决这个问题吗?甚至建议在哪里看?
提前致谢...
我在 Ubuntu 中使用 android studio。我想更新编译sdk版本。现在我可以选择“API 23:Android 6.0 (Marshmallow)”作为最高版本。
项目结构窗口

现在我想增加这个。我应该从 SDK 管理器更新什么?我想尽可能少地更新内容,因为互联网连接缓慢且有限。
今天我开始收到这条恼人的消息(在 Google Play 之外安装 APK 时):
此应用程序是为旧版本的 Android 构建的,不包含最新的隐私保护
这是什么消息?我们应该做什么?
我相信这是因为targetSdkVersion但找不到任何相关信息。
^^^^ 更新 ^^^^
事实证明,当我targetSdkVersion从 24 更改为 26 时 - 该消息消失了。
我将 Target SDK Version 从 30 更改为 31,Min SDK Version 从 19 更改为 22。在 build.gradle 中,minSdkVersion、targetSdkVersion 和 targetSdk 相应更改,除了 minSdk 之外。现在还是19岁。
android {
compileSdk 31
defaultConfig {
applicationId "com.example.studentsacademicmanagementappsama"
minSdk 19
targetSdk 31
versionCode 1
versionName "1.0"
vectorDrawables.useSupportLibrary = true
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
targetSdkVersion 31
minSdkVersion 22
}
}
Run Code Online (Sandbox Code Playgroud)
minSdkVersion、targetSdkVersion和minSdk、targetSdk有什么区别?
我应该将 minSdk 更改为 22 还是忽略它?
我的应用有一个方形图标。当targetSdkVersion<26时,应用程序图标会在所有设备上正确显示。但当targetSdkVersion> = 26时,应用图标会显示在Android 8.0设备上的白色圆圈内。有没有办法消除白色圆圈?
我开发了一个以 API 21 作为目标 SDK 版本的 Android 应用程序。
它会在它上面的 API 上正常运行吗,例如 API 23?
Build.VERSION.SDK_INT
Run Code Online (Sandbox Code Playgroud)
在Android Q模拟器上运行时,返回28而不是29。我有什么想念的吗?我正在尝试添加专门针对Android Q的逻辑,但我不知道如何正确确定此版本。
app.gradle文件包含
targetSdkVersion = 'Q'
compileSdkVersion = 'android-Q'
Run Code Online (Sandbox Code Playgroud) 我正在构建一个Android应用程序,它应该在每个具有蓝牙低功耗的设备上运行,这意味着minSDK为18.我不确定我应该使用哪个targetSDK.我在网上看到,最好始终使用最新版本(API 22).是这种情况,还是我应该使用我支持的每个targetSDK构建我的应用程序,即使用SDK 18为运行API 18的应用程序构建,使用SDK 19为具有API 19的设备构建,......?
我很困惑因为开始BLE发现我可以使用startScan()或startLeScan().Android文档告诉我:"startLeScan()在API级别21中已弃用,请使用startScan()".我不确定这对我应该使用哪个targetSDK来编译我的应用程序有什么影响.如果我使用SDK 22编译并使用startScan(),运行API 18的设备是否能运行我的应用程序,如果我使用API 18编译并使用startLeScan(),运行API 22的设备是否能够运行我的应用程序?或者我应该真的只使用我支持的每个targetSDK构建我的应用程序,如上所述?
target-sdk ×10
android ×9
sdk ×2
.net ×1
android-10.0 ×1
android-ble ×1
apk ×1
build ×1
c# ×1
resources ×1