PDA

View Full Version : کنترل فلش دوربین در اندروید marshmallow



hamed_9192
دوشنبه 01 شهریور 1395, 16:15 عصر
با سلام

دوستان بر اساس تحقیقاتی که انجام دادم، حق دسترسی ها در اندروید 6 فرق کرده و باید موقع اجرا هم از کاربر اجازه گرفته بشه.
حالا یه مشکلی که هست اینه که من یه برنامه ساده دارم که فلش دوربین رو کنترل میکنه (روشن و خاموش)
در اکثر نسخه هم چک کردم کار میکنه. حتی نسخه 5.1
ولی متاسفانه در اندروید 6 به بالا کار نمیکنه. خطا هم نمیده.
مشکل از کجاست؟ به چه شکلی باید دسترسی به فلش رو تعریف کنم؟
لطفا راهنمایی کنید.
با تشکر

تمامی این ها رو چک کردم. ولی جواب ندادن

<uses-permission android:name="android.permission.CAMERA" />
<uses-feature android:name="android.hardware.camera" />
<uses-permission android:name="android.permission.FLASHLIGHT" />
<uses-feature android:name="android.hardware.camera" android:required="false" />
<uses-feature android:name="android.hardware.camera.flash" android:required="false" />

spiderman200700
پنج شنبه 04 شهریور 1395, 14:19 عصر
با استفاده از این متد درخواست تمام دسترسی هایی که در منیفست تعریف کردی برای کاربر ارسال میشه:
@SuppressLint("NewApi")
public void checkPermissionGranted() {
if (Build.VERSION.SDK_INT >= 23) {
try {
PackageInfo info = getPackageManager().getPackageInfo(
getPackageName(), PackageManager.GET_PERMISSIONS);
String[] permissions = info.requestedPermissions;
ArrayList<String> reqPerm = new ArrayList<String>();
for (String permission : permissions) {
if (checkSelfPermission(permission) != PackageManager.PERMISSION_GRANTED) {
reqPerm.add(permission);
}
}
if (!reqPerm.isEmpty()) {
permissions = new String[reqPerm.size()];
ActivityCompat.requestPermissions(this,
reqPerm.toArray(permissions), 1);

}
} catch (Exception e) {
e.printStackTrace();
}
}
}

برای اینکه بفهمی کاربر درخواست دسترسی ها رو قبول کرده یا نه هم باید متد onRequestPermissionsResult رو Override کنی. به این شکل:
@Override
public void onRequestPermissionsResult(int requestCode,
String[] permissions, int[] grantResults) {
super.onRequestPermissionsResult(requestCode, permissions, grantResults);
if (requestCode == 1) {
for (int i = 0; i < permissions.length; i++) {
String permission = permissions[i];
if ( grantResults[i] == PackageManager.PERMISSION_GRANTED) {
//do something
}
}
}
}

به همین راحتی :لبخندساده: