我有一个问题,在更高版本的android.I的权限签入,我正在检查所有的许可,但仍然应用崩溃在6.0。
这是我的java代码:
if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.M &&
checkSelfPermission(android.Manifest.permission.READ_EXTERNAL_STORAGE) != PackageManager.PERMISSION_GRANTED)
{
requestPermissions(new String[]{android.Manifest.permission.GET_ACCOUNTS}, 0);
requestPermissions(new String[]{android.Manifest.permission.INTERNET}, 0);
requestPermissions(new String[]{android.Manifest.permission.ACCESS_NETWORK_STATE}, 0);
requestPermissions(new String[]{android.Manifest.permission.WRITE_EXTERNAL_STORAGE}, 0);
requestPermissions(new String[]{android.Manifest.permission.CALL_PHONE}, 0);
requestPermissions(new String[]{android.Manifest.permission.WAKE_LOCK}, 0);
requestPermissions(new String[]{android.Manifest.permission.ACCESS_COARSE_LOCATION}, 0);
requestPermissions(new String[]{android.Manifest.permission.ACCESS_FINE_LOCATION}, 0);
}
else
{
jump_to_nextActivity();
}
}
public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults)
{
//super.onRequestPermissionsResult(requestCode, permissions, grantResults);
for (int i = 0, len = permissions.length; i < len; i++)
{
String permission = permissions[i];
if (grantResults[i] == PackageManager.PERMISSION_DENIED)
{
flag = false;
}
}
if(flag==true)
{
Intent i = new Intent(Splash.this,Home.class);
i.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
//i.putExtra("EXIT", true);
startActivity(i);
Splash.this.finish();
}
}这是我的Android宣言:
<permission
android:name="android.OMMSoftware.Navsahydri.permission.MAPS_RECEIVE"
android:protectionLevel="signature"/>
<uses-permission android:name="android.OMMSoftware.Navsahydri.permission.MAPS_RECEIVE"/>
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
<uses-permission android:name="fractal5.mythirdapp.permission.MAPS_RECEIVE" />应用程序运行在较低的版本,但当测试它在6.0上崩溃,请帮助。
这是我的逻辑猫:
致命异常:主进程: android.inclusiveit.growbizz,PID: 16919 java.lang.RuntimeException: Failure传递结果ResultInfo{who=@android:requestPermissions:,request=0,结果=-1,activity {android.inclusiveit.growbizz/android.OMMSoftware.Navsahydri.Splash}:java.lang.NullPointerException:尝试在android.app.ActivityThread.deliverResults(ActivityThread.java:3949)上调用空对象引用上的虚拟方法'boolean java.lang.Boolean.booleanValue()‘在android.app.ActivityThread.handleSendResult(ActivityThread.java:3992) at android.app.ActivityThread.-wrap16(ActivityThread.java) at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1543)在android.os.Handler.dispatchMessage(Handler.java:111) at android.os.Looper.loop(Looper.java:207)在android.app.ActivityThread.main(ActivityThread( com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:789)的java.lang.reflect.Method.invoke(原生方法))由: com.android.internal.os.ZygoteInit.main(ZygoteInit.java:679)引起的:尝试在android.OMMSoftware.Navsahydri.Splash.onRequestPermissionsResult(Splash.java:上调用空对象引用上的虚拟方法‘布尔java.lang.Boolean.booleanValue()’54)在android.app.Activity.dispatchRequestPermissionsResult(Activity.java:6969) at android.app.Activity.dispatchActivityResult(Activity.java:6848) at android.app.ActivityThread.deliverResults(ActivityThread.java:3945) at android.app.ActivityThread.handleSendResult(ActivityThread.java:3992) at android.app.ActivityThread.-wrap16(ActivityThread.java)在android.app.ActivityThread$H.handleMessage(ActivityThread.java:1543) at android.os.Handler.dispatchMessage(Handler.java:111) at android.os.Looper.loop(Looper.java:207)在android.app.ActivityThread.main(ActivityThread.java:5776) at java.lang.reflect.Method.invoke(本地方法)在com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.com.android.internal.os.ZygoteInit.main(ZygoteInit.java:679)的java:789)
发布于 2017-03-22 06:36:58
当Android发布Marshmallow版本时,它引入了运行时权限作为其特性之一。该功能包括在访问位置、相机、图片库、联系人等时获得用户的许可。因此,每次用户试图访问上述任何一个,让我们考虑相机在我们的情况下,它将请求许可。弹出会说需要许可才能访问你的相机,不管是允许还是拒绝。如果您拒绝并选中复选框永不再次询问,用户将无法访问整个应用程序的相机。用户需要再次安装弹出窗口。用户可以通过两种方式授予权限:通过设置或通过弹出窗口。为了使它更方便用户,我们在应用程序中插入了弹出。
例如,您正在检查位置的权限,请在onMapReady方法中使用以下代码
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M)
{
if (MapLayoutActivity.this.checkSelfPermission(Manifest.permission.ACCESS_COARSE_LOCATION) != PackageManager.PERMISSION_GRANTED)
{
MapLayoutActivity.this.requestPermissions(new String[]{Manifest.permission.ACCESS_COARSE_LOCATION}, PERMISSION_STORAGE);
return;
}
if (MapLayoutActivity.this.checkSelfPermission(Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED)
{
MapLayoutActivity.this.requestPermissions(new String[]{Manifest.permission.ACCESS_FINE_LOCATION}, PERMISSION_STORAGE);
return;
}
}https://stackoverflow.com/questions/42943706
复制相似问题