1

내가 런타임 위치 권한을 요청하려고를 구현하지 않습니다하지만 내 약속이 예외 던지는 계속 :하지 않습니다사용 권한 API를 시도하지만 호스트 활동 PermissionAwareActivity

"권한 API를 사용하려고하지만 호스트 활동

내 코드 모양과 같이 "PermissionAwareActivity을 구현 : 내 매니페스트에서

PermissionsAndroid.check(PermissionsAndroid.PERMISSIONS.ACCESS_FINE_LOCATION) 
    .then((preGranted) => { 
    console.log('pre-granted', preGranted) 
    if (!preGranted) { 
     PermissionsAndroid.request(
     PermissionsAndroid.PERMISSIONS.ACCESS_FINE_LOCATION, 
     { 'title': 'Enable location', 'message': 'Boss said so..' } 
    ) 
     .then((granted) => { 
     if (granted) { 
      console.log('GRANTED AFTER ASKING:', granted) 
      debugger 
     } 
     }) 
    } 
    }) 

를 내가 가지고 :

<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" /> 

누구나 그 메시지를 보았습니까? PermissionAwareActivity는 온라인상에서 문제가 있는게 무엇입니까?

+0

Android SDK에는 'PermissionsAndroid'라는 이름이 없습니다. 라이브러리를 사용하고 있다면 아마도 그 라이브러리는'PermissionAwareActivity'를 가질 것입니다. – CommonsWare

+0

나는 react-native를 태그에 넣었지만, 내 질문에서는 지정하지 않았다. 아프다. – fozzarelo

답변

0

는 PermissionAwareActivity하면 런타임 권한을 인출하는 데 도움이 인터페이스는

PermissionAwareActivity

무엇입니까. 자신의 활동에 이러한 메소드를 구현해야합니다.

public interface PermissionAwareActivity { 

    int checkPermission(String permission, int pid, int uid); 


    int checkSelfPermission(String permission); 

    boolean shouldShowRequestPermissionRationale(String permission); 

    void requestPermissions(String[] permissions, int requestCode, PermissionListener listener); 
} 
0

당신이 당신의 활동에 을 PermissionAwareActivity을 구현하고 콜백 & & PermissionListener을 정의해야합니다.

public class ReactNativeIndexActivity extends AppCompatActivity implements DefaultHardwareBackBtnHandler,PermissionAwareActivity { 
    private ReactRootView mReactRootView; 
    private ReactInstanceManager mReactInstanceManager; 
    private @Nullable Callback mPermissionsCallback; 
    private @Nullable PermissionListener mPermissionListener; 
@Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     ...... 
} 

    @Override 
    protected void onResume() { 
     super.onResume(); 

     if (mReactInstanceManager != null) { 
      mReactInstanceManager.onHostResume(this, this); 
     } 
     if (mPermissionsCallback != null) { 
      mPermissionsCallback.invoke(); 
      mPermissionsCallback = null; 
     } 
    } 

@Override 
    @TargetApi(Build.VERSION_CODES.M) 
    public void requestPermissions(String[] permissions, int requestCode, PermissionListener listener) { 
     mPermissionListener = listener; 
     requestPermissions(permissions, requestCode); 
    } 
    @Override 
    public void onRequestPermissionsResult(final int requestCode, @NonNull final String[] permissions, @NonNull final int[] grantResults) { 
     mPermissionsCallback = new Callback() { 
      @Override 
      public void invoke(Object... args) { 
       if (mPermissionListener != null && mPermissionListener.onRequestPermissionsResult(requestCode, permissions, grantResults)) { 
        mPermissionListener = null; 
       } 
      } 
     }; 
    }