示例:
AndroidManifest.xml中:
<!-- 悬浮窗所需权限 -->
<uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW" />
在应用悬浮窗展示前,进行悬浮窗权限请求。
package com.ltpay.activity;
import android.app.Activity;
import android.content.Intent;
import android.net.Uri;
import android.os.Build;
import android.os.Bundle;
import android.provider.Settings;
import com.joymeng.payment.util.ResUtil;
import com.ltpay.LtSDK;
import com.ltpay.function.CallBackF;
import com.ltpay.function.LtpayConfig;
import com.ltpay.function.Tools;
/** Loading.java:载入界面 ----- 2018-5-15 上午11:39:25 scimence */
public class Loading extends Activity
{
private static Activity Instatnce;
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
Instatnce = this;
setContentView(ResUtil.getId(this, "ltpay_layout_loading", "layout"));
RequestOverlayPermission();
}
private static final int REQUEST_OVERLAY = 5004;
// 动态请求悬浮窗权限
private void RequestOverlayPermission()
{
if (Build.VERSION.SDK_INT >= 23)
{
if (!Settings.canDrawOverlays(Instatnce))
{
String ACTION_MANAGE_OVERLAY_PERMISSION = "android.settings.action.MANAGE_OVERLAY_PERMISSION";
Intent intent = new Intent(ACTION_MANAGE_OVERLAY_PERMISSION, Uri.parse("package:" + getPackageName()));
Instatnce.startActivityForResult(intent, REQUEST_OVERLAY);
}
else
{
LtSDK.CanShowFloat = true;
}
}
}
/** Activity执行结果,回调函数 */
protected void onActivityResult(int requestCode, int resultCode, Intent data)
{
super.onActivityResult(requestCode, resultCode, data);
// Toast.makeText(activity, "onActivityResult设置权限!", Toast.LENGTH_SHORT).show();
if (requestCode == REQUEST_OVERLAY) // 从应用权限设置界面返回
{
if(resultCode == RESULT_OK)
{
LtSDK.CanShowFloat = true; // 设置标识为可显示悬浮窗
}
else LtSDK.CanShowFloat = false;
}
}
}