gpt4 book ai didi

android - onRequestPermissionsResult 不会在非 Activity 和非 Fragment 类中调用

转载 作者:行者123 更新时间:2023-12-05 00:21:30 25 4
gpt4 key购买 nike

在我的非 Activity 类(class)中,我要求获得良好的位置许可,但
回调 onRequestPermissionsResult “永远不会被调用”。现在我已经看到了一些与此相关的问题,但他们都认为请求是从 Activity 或 fragment 发出的,没有人认为是从非 Activity 类发出请求。这是我的代码

public class Initial implements 
ActivityCompat.OnRequestPermissionsResultCallback{

这是 onRequestPermissionResultCallback 方法的实现
    @Override
public void onRequestPermissionsResult(int requestCode,
String permissions[], int[] grantResults) {
Log.i("flow", "onRequestPermissionsResult: ");
switch (requestCode) {
case 101: {
// If request is cancelled, the result arrays are empty.
if (grantResults[0] == PackageManager.PERMISSION_GRANTED) {

if (ActivityCompat.checkSelfPermission(context, Manifest.permission.ACCESS_FINE_LOCATION) ==
PackageManager.PERMISSION_GRANTED) {

LocationServices.FusedLocationApi.requestLocationUpdates(mGoogleApiClient, mLocationRequest, this);
}
} else {

permissionDeniedsnackBar();
Toast.makeText(context,"permission denied",Toast.LENGTH_SHORT).show();
// permission denied, boo! Disable the
// functionality that depends on this permission.
}
return;
}
//add more cases if you are making more than one permission request
}
}

也是我的许可代码请求
 private void requestPermission() {
ActivityCompat.requestPermissions((Activity) context, new String[]
{Manifest.permission.ACCESS_FINE_LOCATION}
, 101);

}

这是我的构造函数
 public Initial(Activity activity) {
Log.i("flow", "Initial: ");
mActivity = activity;
context = (Context) activity;

}

我已经搜索了这个网站,可以找到这个特定问题的解决方案

已解决
:正如一些人提到的“Activity ”的 onRequestPermissionsResult 方法,我在发出权限请求时作为参数传入 ActivityCompat.requestPermissions(activity,..) 方法将被调用。所以我在那个 Activity 本身中管理了这个 onRequestPermissionsResult 并且它起作用了。谢谢

最佳答案

您在请求许可时传递了 Activity 的上下文,这就是将调用 Activity 的 onRequestPermissionsResult 的原因。抱歉,您将无法在您的 Initial 类中接收此函数回调。但是,您可以使用接口(interface)或其他东西将响应从 Activity 传输到此类。

关于android - onRequestPermissionsResult 不会在非 Activity 和非 Fragment 类中调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47238255/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com