0
A
回答
4
在运行时请求许可使用设备如下当前的位置:
if (ActivityCompat.checkSelfPermission(YourActivity.this, Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED && ActivityCompat.checkSelfPermission(YourActivity.this, Manifest.permission.ACCESS_COARSE_LOCATION) != PackageManager.PERMISSION_GRANTED) {
ActivityCompat.requestPermissions(YourActivity.this, new String[]{Manifest.permission.ACCESS_FINE_LOCATION}, 1);
return;
}else{
// Write you code here if permission already given.
}
1
你可以像下面这样做
在清单:
<uses-feature android:name="android.hardware.location.gps" />
在你想要这个许可请求的活动:
ActivityCompat.requestPermissions(this,new String[]
{Manifest.permission.ACCESS_FINE_LOCATION}, 1);
然后通过使用该功能获得用户回答:
public void onRequestPermissionsResult(int requestCode, String permissions[], int[] grantResults) {
switch (requestCode) {
case 1: {
// If request is cancelled, the result arrays are empty.
if (grantResults.length > 0
&& grantResults[0] == PackageManager.PERMISSION_GRANTED) {
} else {
// permission denied, boo! Disable the
// functionality that depends on this permission.
}
return;
}
// other 'case' lines to check for other
// permissions this app might request
}
}
如果用户接受一次,那么你的应用程序会记住它,你不需要再发送这个DialogBox。请注意,如果用户决定,用户可以稍后禁用它。然后请求该位置之前,你必须以测试权限授予依旧:
public boolean checkLocationPermission()
{
String permission = "android.permission.ACCESS_FINE_LOCATION";
int res = this.checkCallingOrSelfPermission(permission);
return (res == PackageManager.PERMISSION_GRANTED);
}
1
首先,你需要写一个类,你将定义授予和检查用户位置的权限的方法。
public class CheckPermission {
// CHECK FOR LOCATION PERMISSION
public static boolean checkPermission(Activity activity){
int result = ContextCompat.checkSelfPermission(activity, Manifest.permission.ACCESS_FINE_LOCATION);
if (result == PackageManager.PERMISSION_GRANTED){
return true;
} else {
return false;
}
}
//REQUEST FOR PERMISSSION
public static void requestPermission(Activity activity, final int code){
if (ActivityCompat.shouldShowRequestPermissionRationale(activity,Manifest.permission.ACCESS_FINE_LOCATION)){
Toast.makeText(activity,"GPS permission allows us to access location data. Please allow in App Settings for additional functionality.",Toast.LENGTH_LONG).show();
} else {
ActivityCompat.requestPermissions(activity,new String[]{Manifest.permission.ACCESS_FINE_LOCATION},code);
}
}
}
现在您可以调用以上两种静态方法来检查或授予活动中的权限。
public class LocationActivity extends AppCompatActivity {
private GPSTracker mytracker;
private Location myLocation;
private double latitude=0.0d,longitude=0.0d;
public final static int TAG_PERMISSION_CODE=1;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_splash_screen);
if(!CheckPermission.checkPermission(LocationActivity.this)) {
CheckPermission.requestPermission(SplashScreenActivity.this,TAG_PERMISSION_CODE);
}
}
}
相关问题
- 1. Android程序无需使用权限即可获取位置信息?
- 2. 如何获得相机权限是在Android应用程序的应用程序权限启用?
- 3. 为Android Studio应用程序设置不同的用户权限
- 4. 来自Android中其他应用程序的权限
- 5. 获得用户的当前位置一次有权限
- 6. 一旦用户授予应用程序访问权限,我们可以获得什么信息?
- 7. Android获取应用程序的所有者帐户信息
- 8. 立即获取用户位置信息
- 9. 从应用程序信息中删除多余的权限
- 10. 应用程序/用户权限问题
- 11. ANDROID:如何在Android应用程序中获得root访问权限?
- 12. Android的GPS应用程序(获取用户的位置) - 权限,无法正常工作
- 13. 用Mac应用程序获得swift的管理权限
- 14. Android应用程序的权限访问
- 15. Facebook应用程序 - 不要求获得用户数据的权限
- 16. 构建Facebook应用程序并获得用户档案的访问权限
- 17. 获取root应用程序的Android应用程序的root权限?
- 18. Facebook iFrame应用程序 - 获得当前userId在接受权限
- 19. Facebook朋友在iPhone应用程序中的位置信息
- 20. 在应用程序设置中保存用户信息
- 21. 从正常的应用程序获得FBJS的Facebook权限
- 22. 如何获得安装的应用程序的权限
- 23. 来自Mac App的访问权限/库/应用程序支持权限
- 24. 显示Android应用程序内的网站的用户信息
- 25. 保存Windows XP和Vista应用程序的用户信息的最佳位置
- 26. 根权限冻结android应用程序
- 27. Android:应用程序级权限
- 28. Android位置应用程序
- 29. 获得认证的用户信息在Azure的应用阿比
- 30. 获得用户权限的FB密码
谷歌为“运行时权限Android”的第一个结果应指向官方Android的SDK文档页面,WOU可以找到你所需要的 – Selvin