AndroidManifest.xml:
(function() {
var slideCount = document.querySelectorAll(".page-slider").length;
console.log("slidecount", slideCount);
var slider = document.getElementsByClassName("page-slider");
var current = 0;
function moveSlider(next) {
slider[current].classList.remove("onscreen");
slider[current].classList.add("offscreen-left");
if (typeof next != "undefined") {
current = next;
} else {
current++;
}
if (current >= slider.length) {
current = 0;
}
// console.log("the new one is here " + current);
slider[current].classList.add("onscreen");
}
setInterval(function() {
moveSlider();
}, 1000);
})();
MainActivity.kt
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
答案 0 :(得分:0)
您必须了解Android中权限背后的逻辑。仅在清单中添加权限,并不意味着用户已授权应用程序执行这些权限启用的操作。
如果您的if条件评估为true,则由于未授予这些权限,因此您必须向用户询问这些权限。
Android对此有很好的documentation。
我强烈建议您解决这个问题。
答案 1 :(得分:0)
您需要向用户请求许可并获得批准see this to request 您可以这样请求
ActivityCompat.requestPermissions(MainActivity.this,
new String[]{Manifest.permission. ACCESS_FINE_LOCATION,Manifest.permission. ACCESS_COARSE_LOCATION},
reqCode);
,您可以这样获得请求结果:
@Override
public void onRequestPermissionsResult(int requestCode, String
permissions[], int[] grantResults) {
switch (requestCode) {
case reqCode: {
// If request is cancelled, the result arrays are empty.
if (grantResults.length > 0
&& grantResults[0] == PackageManager.PERMISSION_GRANTED) {
// permission was granted, yay! Do the
// contacts-related task you need to do.
} else {
// permission denied, boo! Disable the
// functionality that depends on this permission.
Toast.makeText(MainActivity.this, "Permission denied", Toast.LENGTH_SHORT).show();
}
return;
}
// other 'case' lines to check for other
// permissions this app might request
}
}
答案 2 :(得分:0)
从Android 6.0及更高版本开始,需要请求权限,最好的方法是创建一个PermissionManager类来处理该权限,然后在用户的活动中检入用户是否已接受权限:
class PermissionManager private constructor() {
fun checkPermission(
activity: Activity,
permissionRequests: Array<String>?,
requestCode: Int
): Boolean {
permissionRequests?.let {
it.firstOrNull {
ContextCompat.checkSelfPermission(
activity,
it
) != PackageManager.PERMISSION_GRANTED
}?.apply {
ActivityCompat.requestPermissions(
activity,
permissionRequests,
requestCode
)
return false
}
}
return true
}
companion object {
val instance by lazy { PermissionManager() }
const val CAMERA_PERMISSION = 1
}
}
然后在您的活动中检查权限结果:
class MainActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_ar)
//If the user has the permission accepted the next times
if (PermissionManager.instance.checkPermission(
this, arrayOf(
Manifest.permission.CAMERA
), PermissionManager.CAMERA_PERMISSION
)
) {
initLogic()
}
}
override fun onRequestPermissionsResult(
requestCode: Int,
permissions: Array<out String>,
grantResults: IntArray
) {
when (requestCode) {
PermissionManager.CAMERA_PERMISSION -> {
if (grantResults.isNotEmpty() && grantResults[0] == PackageManager.PERMISSION_GRANTED) {
initLogic()
} else {
return
}
}
}
}
}