|
53 | 53 | import android.provider.MediaStore.Images.Media; |
54 | 54 | import android.graphics.Bitmap; |
55 | 55 | import android.graphics.BitmapFactory; |
| 56 | +import android.Manifest; |
| 57 | +import java.lang.Object; |
56 | 58 |
|
57 | 59 | import java.net.*; |
58 | 60 | import java.io.*; |
@@ -1859,22 +1861,62 @@ else if (t_caminfo.facing == CameraCompat.CameraInfo.CAMERA_FACING_FRONT) |
1859 | 1861 | return new String(t_directions); |
1860 | 1862 | } |
1861 | 1863 |
|
| 1864 | + private String m_source; |
| 1865 | + public static final int CAMERA_PERMISSION_REQUEST_CODE = 1; |
1862 | 1866 | public void showPhotoPicker(String p_source, int p_width, int p_height) |
1863 | 1867 | { |
1864 | | - m_photo_width = p_width; |
1865 | | - m_photo_height = p_height; |
1866 | | - |
1867 | | - if (p_source.equals("camera")) |
1868 | | - showCamera(); |
1869 | | - else if (p_source.equals("album")) |
1870 | | - showLibrary(); |
1871 | | - else if (p_source.equals("library")) |
1872 | | - showLibrary(); |
1873 | | - else |
1874 | | - { |
1875 | | - doPhotoPickerError("source not available"); |
1876 | | - } |
| 1868 | + m_photo_width = p_width; |
| 1869 | + m_photo_height = p_height; |
| 1870 | + m_source = p_source; |
| 1871 | + |
| 1872 | + // Camera permission not granted, so ask for it |
| 1873 | + if (Build.VERSION.SDK_INT >= 23 && getContext().checkSelfPermission(Manifest.permission.CAMERA) |
| 1874 | + != PackageManager.PERMISSION_GRANTED) |
| 1875 | + { |
| 1876 | + Activity t_activity = (LiveCodeActivity)getContext(); |
| 1877 | + t_activity.requestPermissions(new String[]{Manifest.permission.CAMERA}, CAMERA_PERMISSION_REQUEST_CODE); |
| 1878 | + } |
| 1879 | + // Camera permission already granted, or we are in a device running Android API < 23 |
| 1880 | + else |
| 1881 | + { |
| 1882 | + onCameraPermissionGranted(m_source); |
| 1883 | + } |
1877 | 1884 | } |
| 1885 | + |
| 1886 | + private void onCameraPermissionGranted(String p_source) |
| 1887 | + { |
| 1888 | + if (p_source.equals("camera")) |
| 1889 | + showCamera(); |
| 1890 | + else if (p_source.equals("album")) |
| 1891 | + showLibrary(); |
| 1892 | + else if (p_source.equals("library")) |
| 1893 | + showLibrary(); |
| 1894 | + else |
| 1895 | + { |
| 1896 | + doPhotoPickerError("source not available"); |
| 1897 | + } |
| 1898 | + } |
| 1899 | + |
| 1900 | + private void onCameraRequestPermissionResult(int requestCode, String[] permissions, int[] grantResults) |
| 1901 | + { |
| 1902 | + if (requestCode == CAMERA_PERMISSION_REQUEST_CODE) |
| 1903 | + { |
| 1904 | + if (grantResults[0] == PackageManager.PERMISSION_GRANTED) |
| 1905 | + { |
| 1906 | + onCameraPermissionGranted(m_source); |
| 1907 | + } |
| 1908 | + else |
| 1909 | + { |
| 1910 | + doPhotoPickerError("Permission denied. You can change this in the Settings app"); |
| 1911 | + } |
| 1912 | + } |
| 1913 | + } |
| 1914 | + |
| 1915 | + public void onRequestPermissionsResult(int requestCode, String[] permissions, int[] grantResults) |
| 1916 | + { |
| 1917 | + onCameraRequestPermissionResult(requestCode, permissions, grantResults); |
| 1918 | + } |
| 1919 | + |
1878 | 1920 |
|
1879 | 1921 | public void showCamera() |
1880 | 1922 | { |
|
0 commit comments