android6.0 百度导航权限
android6.0 百度导航权限 百度导航demo貌似没看到6.0权限处理,文档虽然出现了,但是没有详细的代码可参考,或许自己不够认真没发现吧,不管怎么还是自己弄了个权限处理。先看看6.0那些权限需要动态授权。
![](https://segmentfault.com/img/remote/1460000006776051)
全部动态授权在这里,也就不难找出百度导航那些需要拿出来进行授权了
下面开始上代码
调用
全部动态授权在这里,也就不难找出百度导航那些需要拿出来进行授权了
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/>
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/>
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.PROCESS_OUTGOING_CALLS"/>
<uses-permission android:name="android.permission.READ_PHONE_STATE"/>
<uses-permission android:name="android.permission.RECORD_AUDIO"/>
<uses-permission android:name="android.permission.CAMERA"/>
<uses-permission android:name="android.permission.CALL_PHONE"/>
下面开始上代码
调用
/**
* 使用SDK前,先进行百度服务授权和引擎初始化。
*/
if (android.os.Build.VERSION.SDK_INT >= 23)
{
showContacts(layoutTile);
}else
{
initNavi();
}
下面是导航所需的权限
public void showContacts(View v)
{
Log.i("tag", "Show contacts button pressed. Checking permissions.");
// Verify that all required contact permissions have been granted.
if (ActivityCompat.checkSelfPermission(getActivity(), Manifest.permission.ACCESS_COARSE_LOCATION)
!= PackageManager.PERMISSION_GRANTED
|| ActivityCompat.checkSelfPermission(getActivity(), Manifest.permission.ACCESS_FINE_LOCATION)
!= PackageManager.PERMISSION_GRANTED
|| ActivityCompat.checkSelfPermission(getActivity(), Manifest.permission.WRITE_EXTERNAL_STORAGE)
!= PackageManager.PERMISSION_GRANTED
|| ActivityCompat.checkSelfPermission(getActivity(), Manifest.permission.READ_PHONE_STATE)
!= PackageManager.PERMISSION_GRANTED
|| ActivityCompat.checkSelfPermission(getActivity(), Manifest.permission.PROCESS_OUTGOING_CALLS)
!= PackageManager.PERMISSION_GRANTED
|| ActivityCompat.checkSelfPermission(getActivity(), Manifest.permission.RECORD_AUDIO)
!= PackageManager.PERMISSION_GRANTED
|| ActivityCompat.checkSelfPermission(getActivity(), Manifest.permission.CAMERA)
!= PackageManager.PERMISSION_GRANTED
|| ActivityCompat.checkSelfPermission(getActivity(), Manifest.permission.CALL_PHONE)
!= PackageManager.PERMISSION_GRANTED)
{
// Contacts permissions have not been granted.
Log.i("tag", "Contact permissions has NOT been granted. Requesting permissions.");
requestContactsPermissions(v);
} else
{
// Contact permissions have been granted. Show the contacts fragment.
Log.i("tag",
"Contact permissions have already been granted. Displaying contact details.");
initNavi();
}
}
private void requestContactsPermissions(View v)
{
// BEGIN_INCLUDE(contacts_permission_request)
if (ActivityCompat.shouldShowRequestPermissionRationale(getActivity(), Manifest.permission.ACCESS_COARSE_LOCATION)
|| ActivityCompat.shouldShowRequestPermissionRationale(getActivity(), Manifest.permission.ACCESS_FINE_LOCATION)
|| ActivityCompat.shouldShowRequestPermissionRationale(getActivity(), Manifest.permission.WRITE_EXTERNAL_STORAGE)
|| ActivityCompat.shouldShowRequestPermissionRationale(getActivity(), Manifest.permission.READ_PHONE_STATE)
|| ActivityCompat.shouldShowRequestPermissionRationale(getActivity(), Manifest.permission.PROCESS_OUTGOING_CALLS)
|| ActivityCompat.shouldShowRequestPermissionRationale(getActivity(), Manifest.permission.RECORD_AUDIO)
|| ActivityCompat.shouldShowRequestPermissionRationale(getActivity(), Manifest.permission.CAMERA)
|| ActivityCompat.shouldShowRequestPermissionRationale(getActivity(), Manifest.permission.CALL_PHONE)
)
{
// Provide an additional rationale to the user if the permission was not granted
// and the user would benefit from additional context for the use of the permission.
// For example, if the request has been denied previously.
Log.i("tag",
"Displaying contacts permission rationale to provide additional context.");
// Display a SnackBar with an explanation and a button to trigger the request.
Snackbar.make(v, "permission_contacts_rationale",
Snackbar.LENGTH_INDEFINITE)
.setAction("ok", new View.OnClickListener()
{
@Override
public void onClick(View view)
{
ActivityCompat
.requestPermissions(getActivity(), new String[]{Manifest.permission.ACCESS_COARSE_LOCATION, Manifest.permission.ACCESS_FINE_LOCATION,
Manifest.permission.WRITE_EXTERNAL_STORAGE, Manifest.permission.READ_PHONE_STATE, Manifest.permission.PROCESS_OUTGOING_CALLS, Manifest.permission.RECORD_AUDIO, Manifest.permission.CAMERA, Manifest.permission.CALL_PHONE},
0);
}
})
.show();
} else
{
// Contact permissions have not been granted yet. Request them directly.
ActivityCompat.requestPermissions(getActivity(), new String[]{Manifest.permission.ACCESS_COARSE_LOCATION, Manifest.permission.ACCESS_FINE_LOCATION,
Manifest.permission.WRITE_EXTERNAL_STORAGE, Manifest.permission.READ_PHONE_STATE, Manifest.permission.PROCESS_OUTGOING_CALLS, Manifest.permission.RECORD_AUDIO, Manifest.permission.CAMERA, Manifest.permission.CALL_PHONE}, 0);
}
// END_INCLUDE(contacts_permission_request)
}
@Override
public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults)
{
if (requestCode == 0)
{
if (PermissionUtil.verifyPermissions(grantResults))
{
initNavi();
}
} else
{
super.onRequestPermissionsResult(requestCode, permissions, grantResults);
}
}