我对学习如何开发使用指纹认证的 android 应用程序非常感兴趣。
我如何实现指纹认证?
我想获得在我的应用程序中读取短信的权限。这是我的代码:
String permission = Manifest.permission.READ_SMS;
if (ContextCompat.checkSelfPermission(getContext(), permission) != PackageManager.PERMISSION_GRANTED){
permissionList.add(permission);
if (!ActivityCompat.shouldShowRequestPermissionRationale(getActivity(), permission)){
requestPermissions(new String[]{permission}), SMS_PERMISSION);
}
}
Run Code Online (Sandbox Code Playgroud)
我没有收到确认许可请求的对话框。对于其他权限(如WRITE_STORAGE, READ_CONTACTS),我得到了这个对话框。你知道如何解决吗?
方法onRequestPermissionsResult告诉我未授予许可。但它可以工作,没有确认对话框。
我有一个带有以下代码的自定义视图:
private final Drawable outerGauge;
private final Drawable innerGauge;
private float rotateX;
private float rotateY;
private int rotation = 0;
{
outerGauge = getContext().getDrawable(R.drawable.gauge_outer);
innerGauge = getContext().getDrawable(R.drawable.gauge_inner);
}
@Override
protected void onDraw(Canvas canvas) {
super.onDraw(canvas);
outerGauge.draw(canvas);
canvas.rotate(rotation, rotateX, rotateY);
innerGauge.draw(canvas);
canvas.rotate(-rotation, rotateX, rotateY);
}
Run Code Online (Sandbox Code Playgroud)
大多数情况下,这会产生非常清晰的图像。但是,有时结果如下所示:
这似乎只发生在我的两个测试设备之一上。该设备是摩托罗拉 moto G,具有 Android 6 升级。另一个似乎总是能产生非常清晰的图像的测试设备是一加 X,Android 5。它也不一致,有时会发生,然后下一刻不再发生。从我已经能够测试的情况来看,它甚至不依赖于应用的旋转量。不过,我从未见过它发生在直角(0、90、180 度)上,而且在接近 45 或 135 度的角度上情况似乎更糟。
有问题的图像是导入的 SVG,直接放置在 res/drawable 文件夹中。因此它不可能是分辨率。(此外,gauge_outer 被放置在完全相同的文件夹中并以完全相同的方式制作,尽管这个不会变得模糊。)
关于如何解决这个问题的任何想法?
编辑:
好吧,别介意我说的完全不一致。它似乎完全一致,并且在旋转越来越接近 90 度时最糟糕。此外,只要旋转正好 90 度,指示器就会完全消失。
编辑:
看:两个模拟器,一个运行 Android 5,一个运行 Android 6:
完整的源代码如下:
package nl.dvandenberg.gauge;
import …Run Code Online (Sandbox Code Playgroud) 我在 Android 6.0 及更高版本上验证使用 SHA384 的 ECDSA 签名的证书时遇到问题。但是,它适用于 Android 4.1 - 5.1。我将其追溯到证书类中的错误。在 verify 方法中抛出异常:
java.lang.RuntimeException: error:0f092074:elliptic curve routines:ec_asn1_pkparameters2group:NON_NAMED_CURVE
Run Code Online (Sandbox Code Playgroud)
知道为什么 Android 6.0 会发生这种情况以及如何修复吗?我已经使用 Spongycastle 作为安全提供程序对其进行了测试,但是 verify 函数总是抛出该异常。
感谢和问候
当用户通过强制门户连接到开放 WiFi 时,Android 设备将打开一个带有强制门户/登录页面的浏览器实例。
我们想禁用它,因为我们使用应用程序进行登录。
我在 Android Marshmallow 中遇到了 CaptivePortal 类。我可以用它来禁用网络吗?
类名:android.net.CaptivePortal
方法名称:ignoreNetwork
如何使用上述类和方法在 WiFi 上禁用强制门户的自动启动?
android wifi captivenetwork android-6.0-marshmallow captiveportal
我用 NDK 开发了 Android 应用程序。我更新了 Android Studio cur.ver。2.2.2 运行应用程序。应用程序已安装在设备中。但是现在它没有在 Marshmallow 设备中更新,否则工作正常。在运行控制台中出现以下错误。当android:extractNativeLibs="false"在AndroidManifest.xml中。如果android:extractNativeLibs="true"然后应用程序正在设备中更新。
$ adb shell pm install -r "/data/local/tmp/"
pkg:/data/local/tmp/ 失败 [INSTALL_FAILED_INVALID_APK]
为什么会发生这种情况?谁能给我解释一下?
android android-ndk android-manifest android-studio android-6.0-marshmallow
我正在为我的cordova 应用程序使用“imagepicker”插件,以便从移动图库中获取图像并使用它们。我正在 android 6.0 设备上测试我的应用程序,这就是问题所在,marshmallow Android 6.0 需要运行时许可,不像旧版本“它正在处理旧版本”,而是在 api 23 或更高版本上打开图库它立即关闭,应用程序崩溃。当我搜索时,我发现我需要获得许可才能这样做。所以我开始使用“Android 权限 Cordova 插件”并通过复制他们在此页面中提供的示例:https : //www.npmjs.com/package/cordova-plugin-android-permissions
这是:
var permissions = cordova.plugins.permissions;
permissions.hasPermission(permissions.CAMERA, checkPermissionCallback, null);
function checkPermissionCallback(status) {
if(!status.hasPermission) {
var errorCallback = function() {
console.warn('Camera permission is not turned on');
}
permissions.requestPermission(
permissions.CAMERA,
function(status) {
if(!status.hasPermission) errorCallback();
},
errorCallback);
}
}
Run Code Online (Sandbox Code Playgroud)
控制台总是说:'相机权限未打开'并且没有显示权限对话框。
然后我再次搜索并找到了这个已解决的问题和答案,所以我安装了“cordova-plugin-diagnostic”并尝试了以下代码:
function requestPermission(){
cordova.plugins.diagnostic.requestRuntimePermission(function(status){
switch(status){
case cordova.plugins.diagnostic.runtimePermissionStatus.GRANTED:
console.log("Permission granted (or already granted) - call the plugin");
// call SQLite plugin
break;
case cordova.plugins.diagnostic.runtimePermissionStatus.DENIED:
console.log("Permission denied - ask …Run Code Online (Sandbox Code Playgroud) 虽然这似乎是一个愚蠢的问题,但我想知道是否有另一种优雅的方式来处理我的设计问题,而不仅仅是创建两个单独的布局我的应用程序应该具有不同的自定义布局,用于棉花糖和牛轧糖版本的持续通知。正如我所说,最直接的方法是创建两个不同的 XML 文件并基于运行时平台加载它们。还有其他方法吗?
android android-layout android-6.0-marshmallow android-7.0-nougat
从今天开始,我遇到了本机崩溃。仅在 Android 6.0 上有报道。使用堆栈跟踪:
native: pc 0000000000049c34 /system/lib/libc.so (tgkill+12)
native: pc 00000000000474cd /system/lib/libc.so (pthread_kill+36)
native: pc 000000000001bbe3 /system/lib/libc.so (raise+10)
native: pc 000000000001848d /system/lib/libc.so (__libc_android_abort+36)
native: pc 00000000000164ec /system/lib/libc.so (abort+4)
native: pc 0000000000331875 /system/lib/libart.so (_ZN3art7Runtime5AbortEv+228)
native: pc 00000000000f44db /system/lib/libart.so (_ZN3art10LogMessageD2Ev+2226)
native: pc 000000000025a92f /system/lib/libart.so (_ZN3art9JavaVMExt8JniAbortEPKcS2_+1550)
native: pc 000000000025ad5b /system/lib/libart.so (_ZN3art9JavaVMExt9JniAbortFEPKcS2_z+74)
native: pc 0000000000278577 /system/lib/libart.so (_ZN3art3JNI15CallVoidMethodVEP7_JNIEnvP8_jobjectP10_jmethodIDSt9__va_list+470)
native: pc 0000000000062c9f /system/lib/libandroid_runtime.so
Run Code Online (Sandbox Code Playgroud)
对此的任何建议都会有所帮助,因为我无法理解这一点或重现此崩溃。
我正在使用 API 级别 27,但在 6.0 平板电脑上运行我的应用程序。这是可疑的代码:
WifiManager wm = (WifiManager)pContext.getSystemService(Context.WIFI_SERVICE);
WifiInfo wi = wm.getConnectionInfo();
SupplicantState ss = wi.getSupplicantState();
NetworkInfo.DetailedState ds = wi.getDetailedStateOf( ss );
String ssid = wi.getSSID();
int ip = wi.getIpAddress();
Run Code Online (Sandbox Code Playgroud)
我的平板电脑已连接(我在 WiFi 面板中看到“已连接”)到在笔记本电脑上创建的临时网络。没有互联网接入。
ss 是 COMPLETED
ds 是 OBTAINING_IPADDR
ip是-745953088(192.168.137.211)
为什么DetailedState设置为OBTAINING_IPADDR而不是CONNECTED?
android ×8
android-ndk ×1
android-wifi ×1
cordova ×1
crash ×1
fingerprint ×1
java ×1
java-canvas ×1
native ×1
permissions ×1
verify ×1
wifi ×1
wifimanager ×1