unity 动态申请 通知权限(Android 方法)
Andord 代码
public void PermissionNotificationsEnabled(String objectName,String methodName)
{
//判断是否启动通知权限
Log.d(objectName,"onCreate:Debug调试 1");
if (!NotificationManagerCompat.from(this).areNotificationsEnabled()) {
Log.d(objectName,"onCreate:Debug调试 2");
UnityPlayer.UnitySendMessage(objectName,methodName,"true");
}
}
public void PermissionPOST_NOTIFICATIONS(String objectName,String methodName)
{
//未授权通知权限,会自动跳转到应用设置里面
Log.d(objectName,"onCreate:Debug调试 3");
Intent localIntent = new Intent();
//判断API,跳转到应用通知管理页面
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {//8.0及以上
localIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
localIntent.setAction("android.settings.APPLICATION_DETAILS_SETTINGS");
localIntent.setData(Uri.fromParts("package", this.getPackageName(), null));
}
else if (android.os.Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {//8.0以下
localIntent.setAction("android.settings.APP_NOTIFICATION_SETTINGS");
localIntent.putExtra("app_package", this.getPackageName());
localIntent.putExtra("app_uid", this.getApplicationInfo().uid);
}
this.startActivity(localIntent);
}

unity 代码
public void PermissionNotificationsEnabled()
{
Debug.Log("云消息权限请求 1");
try
{
Debug.Log("云消息权限请求 3");
if (true)
{
Debug.Log("云消息权限请求 4");
AndroidJavaClass jc = new AndroidJavaClass("com.unity3d.player.UnityPlayer");
AndroidJavaObject jo = jc.GetStatic<AndroidJavaObject>("currentActivity");
//在需要使用的地方调用此方法即可获取权限
jo.Call("PermissionNotificationsEnabled", this.gameObject.name, "PermissionPOST_NOTIFICATIONS");
}
}
catch
{
Debug.Log("云消息权限请求 失败");
}
}
public void PermissionPOST_NOTIFICATIONS(string str)
{
Debug.Log("云消息权限请求 11" + str);
try
{
Debug.Log("云消息权限请求 13");
if (true)
{
Debug.Log("云消息权限请求 14");
AndroidJavaClass jc = new AndroidJavaClass("com.unity3d.player.UnityPlayer");
AndroidJavaObject jo = jc.GetStatic<AndroidJavaObject>("currentActivity");
//在需要使用的地方调用此方法即可获取权限
jo.Call("PermissionPOST_NOTIFICATIONS", this.gameObject.name, "GoogleAdMobController");
}
}
catch
{
Debug.Log("云消息权限请求 1 失败");
}
}
