機能 - あなたがFaceTrackerが必要適切なアクセス権を取得されていませんように見えるん。必要に応じて、以下の実装とインターフェイスにfacetracker権限を追加するだけです。我々のアプリで
私たちは私たちのために私たちのすべての権限を処理するコールバックとのインタフェースを追加しました:
public interface PermissionAndPackageAvailabilityChecker {
void checkCameraPermission(final PermissionResult callback);
void checkFileIoPermission(final PermissionResult callback);
interface PermissionResult {
void hasPermission();
void noPermission();
}
}
実装は非常に単純です:
public class DefaultPermissionAndPackage implements PermissionAndPackageAvailabilityChecker {
private final Context mContext;
@Inject
public DefaultPermissionAndPackage(Context context) {
mContext = context;
}
@Override
public void checkCameraPermission(final PermissionResult callback) {
int cameraPermission = checkPermission(mContext, Manifest.permission.CAMERA);
if (checkHasPermission(cameraPermission)) {
callback.hasPermission();
} else {
callback.noPermission();
}
}
@Override
public void checkFileIoPermission(PermissionResult callback) {
// Check if we have write permission
int permission = checkPermission(mContext, Manifest.permission.WRITE_EXTERNAL_STORAGE);
if (checkHasPermission(permission)) {
callback.hasPermission();
} else {
callback.noPermission();
}
}
private int getTargetSdk(int defaultVersion) {
int targetSdkVersion = defaultVersion;
try {
PackageInfo packageInfo = mContext.getPackageManager().getPackageInfo(mContext.getPackageName(), 0);
targetSdkVersion = packageInfo.applicationInfo.targetSdkVersion;
} catch (PackageManager.NameNotFoundException ignored) {
//Should not happen . . . I hope
}
return targetSdkVersion;
}
private int checkPermission(final Context context, final String permission) {
int permissionResult = ActivityCompat.checkSelfPermission(context, permission);
// this can probably be simplified but explains the logic around permissions nicely.
if (Build.VERSION.SDK_INT > Build.VERSION_CODES.LOLLIPOP_MR1
&& getTargetSdk(Build.VERSION_CODES.LOLLIPOP_MR1) <= Build.VERSION_CODES.LOLLIPOP_MR1) {
permissionResult = PermissionChecker.checkSelfPermission(context, permission);
//Will check marshmallow here in the future
}
return permissionResult;
}
private boolean checkHasPermission(int permissionToCheck) {
return permissionToCheck == PackageManager.PERMISSION_GRANTED;
}
}
こんにちは。 FaceTrackerが必要とするアクセス権を見てから、int permission = checkPermission(mContext、Manifest.permission.WRITE_EXTERNAL_STORAGE);を実行して要求してください。 (私の例はファイル書き込みのためのもので、おそらく他のもののためのものです)。チェックパーミッションメソッドは次のようになります。int permissionResult = ActivityCompat.checkSelfPermission(context、permission); – Smashing
ありがとう!問題を修正しましたが、アプリを実行すると部分的に黒い画面が表示されます:( – Kek
カメラの許可もチェックしましたか? –