2017-08-30 41 views
-4

在android版本> 6.0的一些android設備中,當我訪問相機時,設備相機被打開,當我捕獲並接受圖片時,相機崩潰(加載相機再次),我有相機訪問權限。可以做些什麼?任何想法?安卓版Android設備相機崩潰問題> 6.0

+0

它。 – Piyush

+0

添加android:hardwareAccelerated =「true」和 android:largeHeap =「true」來顯示你的應用程序的文件,在應用程序塊內,它可能會幫助你, –

+0

嗨,你從未提及過你的Unity版本。只需將Unity更新爲支持新權限類型的最新版本即可。 – Programmer

回答

1

你需要問run time permission因爲在在Android 6.0(API級別23)開始,用戶授予權限的應用程序應用程序運行時,而不是當他們安裝應用程序。

ask for run time permission for camera using below code

String permission = android.Manifest.permission.CAMERA; 
if (ActivityCompat.checkSelfPermission(SearchCityClass.this, permission) 
    != PackageManager.PERMISSION_GRANTED){ 
     ActivityCompat.requestPermissions(SearchCityClass.this, new String[] 
        {permission}, 1); 

} 

now handle permisiion result

因爲運行時間許可的
@Override 
public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, 
             @NonNull int[] grantResults) { 
    super.onRequestPermissionsResult(requestCode, permissions, grantResults); 
    if (requestCode == 1) { 
     if (grantResults[0] == PackageManager.PERMISSION_GRANTED) { 

      // perform your action here 
      Toast.makeText(this, "Camera_permission_granted ", Toast.LENGTH_SHORT).show(); 

     } else { 

      Toast.makeText(this, "Camera_permission_not_granted ", Toast.LENGTH_SHORT).show(); 
     } 
    } 

} 
+0

我有 \t 我有 在android清單中。我是否需要再次從上面的代碼中提問? – Tejas

+0

@Tejas是的,你需要再次詢問運行時權限,因爲**從Android 6.0(API級別23)開始,用戶在應用程序運行時爲應用程序授予權限,而不是在他們安裝應用程序時授予。** –

0
btnCamara.setOnClickListener(new View.OnClickListener() 
{ 
    @Override 
    public void onClick (View view){ 
    if (hasPermissionUseCamera()) { 
     //do smth 
    } 
    } 
} 

public boolean hasPermissionUseCamera() { 
    if (Build.VERSION.SDK_INT >= 23) { 
     if (ActivityCompat.checkSelfPermission(getContext(), Manifest.permission.WRITE_EXTERNAL_STORAGE) == PackageManager.PERMISSION_GRANTED) { 
      return true; 
     } else { 
      requestPermissions(new String[]{Manifest.permission.CAMERA}, 0); 
      return false; 
     } 
    } else { //permission is automatically granted on sdk<23 upon installation 
     return true; 
    } 
} 

@RequiresApi(api = Build.VERSION_CODES.M) 
@Override 
public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) { 

    switch (requestCode) { 
     case 0: { 
      if (getActivity().checkSelfPermission(Manifest.permission.CAMERA) == PackageManager.PERMISSION_GRANTED) { 
       //do smth 
      } else { 
       Toast.makeText(getActivity(), "Access Denied", Toast.LENGTH_SHORT).show(); 
      } 
      break; 
     } 
    } 
} 
+0

我有運行時許可在開始和用戶已經接受了許可..我仍然遇到崩潰問題。這個問題有時會發生,而不是所有的時候。 10次​​出現碰撞2次。 – Tejas

+0

你應該提供一些代碼... –

+0

我已經在Android清單中添加了這個 Tejas