为什么 `hasEnrolledFingerprints` 给出错误,它只在我的片段中需要权限,而在 Google 的示例中的 Activity 中不需要?
Why is `hasEnrolledFingerprints` giving error that it requires a permission only in my Fragment but not in the Activity in Google's Example?
我正在尝试在我的应用程序中(特别是在我的片段中)实现 Google 的指纹 API。 Google 给出了一个示例,但它是在 Activity here.
中实现的
我的具体问题是下面的代码检查是否已经注册了指纹,它给我一个错误(下面的屏幕截图):
问题 --> 我需要做哪些更改才能使其在我的 Fragment 中工作(与 activity 类似 Google 具有)?
if (!mFingerprintManager.hasEnrolledFingerprints()) {
purchaseButton.setEnabled(false);
// This happens when no fingerprints are registered.
Toast.makeText(getActivity(),
"Go to 'Settings -> Security -> Fingerprint' and register at least one fingerprint",
Toast.LENGTH_LONG).show();
return;
}
Android 6.0 必须 'ask' 在 运行 时获得许可。 https://developer.android.com/training/permissions/requesting.html
Dangerous permissions can give the app access to the user's
confidential data. If your app lists a normal permission in its
manifest, the system grants the permission automatically. If you list
a dangerous permission, the user has to explicitly give approval to
your app.
即使您的清单中有 <uses-permission android:name="android.permission.USE_FINGERPRINT"/>
,我的理解是您必须请求许可。所以看起来这个错误是因为你的应用没有 -运行 time- 使用指纹管理器的权限。
(只有 90% 的把握,因为我现在坚持使用 5.0,抱歉)
更新:http://developer.android.com/reference/android/Manifest.permission.html#USE_FINGERPRINT
public static final String USE_FINGERPRINT ---------- Added in API level 23
Allows an app to use fingerprint hardware.
Protection level: normal
看来您在 运行 时不需要此权限。
1) 您的清单中是否有权限?
2) 您应该将以下代码放入您的代码中,以检查是否出于某种原因 revoked/not 授予了权限。
if (ContextCompat.checkSelfPermission(thisActivity,
Manifest.permission.USE_FINGERPRINT) // this might need massaged to 'android.permission.USE_FINGERPRINT'
!= PackageManager.PERMISSION_GRANTED) {
Log.d ("TEST", "You don't have permission");
}
(或接近这个的东西)就像 https://developer.android.com/training/permissions/requesting.html
中的例子
我正在尝试在我的应用程序中(特别是在我的片段中)实现 Google 的指纹 API。 Google 给出了一个示例,但它是在 Activity here.
中实现的我的具体问题是下面的代码检查是否已经注册了指纹,它给我一个错误(下面的屏幕截图):
问题 --> 我需要做哪些更改才能使其在我的 Fragment 中工作(与 activity 类似 Google 具有)?
if (!mFingerprintManager.hasEnrolledFingerprints()) {
purchaseButton.setEnabled(false);
// This happens when no fingerprints are registered.
Toast.makeText(getActivity(),
"Go to 'Settings -> Security -> Fingerprint' and register at least one fingerprint",
Toast.LENGTH_LONG).show();
return;
}
Android 6.0 必须 'ask' 在 运行 时获得许可。 https://developer.android.com/training/permissions/requesting.html
Dangerous permissions can give the app access to the user's confidential data. If your app lists a normal permission in its manifest, the system grants the permission automatically. If you list a dangerous permission, the user has to explicitly give approval to your app.
即使您的清单中有 <uses-permission android:name="android.permission.USE_FINGERPRINT"/>
,我的理解是您必须请求许可。所以看起来这个错误是因为你的应用没有 -运行 time- 使用指纹管理器的权限。
(只有 90% 的把握,因为我现在坚持使用 5.0,抱歉)
更新:http://developer.android.com/reference/android/Manifest.permission.html#USE_FINGERPRINT
public static final String USE_FINGERPRINT ---------- Added in API level 23
Allows an app to use fingerprint hardware.
Protection level: normal
看来您在 运行 时不需要此权限。
1) 您的清单中是否有权限?
2) 您应该将以下代码放入您的代码中,以检查是否出于某种原因 revoked/not 授予了权限。
if (ContextCompat.checkSelfPermission(thisActivity,
Manifest.permission.USE_FINGERPRINT) // this might need massaged to 'android.permission.USE_FINGERPRINT'
!= PackageManager.PERMISSION_GRANTED) {
Log.d ("TEST", "You don't have permission");
}
(或接近这个的东西)就像 https://developer.android.com/training/permissions/requesting.html
中的例子