You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
81 lines
2.5 KiB
81 lines
2.5 KiB
package com.frank.ffmpeg.floating;
|
|
|
|
import android.app.Activity;
|
|
import android.content.Context;
|
|
import android.content.Intent;
|
|
import android.net.Uri;
|
|
import android.os.Build;
|
|
import android.os.Bundle;
|
|
import android.support.annotation.RequiresApi;
|
|
|
|
import java.util.ArrayList;
|
|
import java.util.List;
|
|
|
|
/**
|
|
* 用于在内部自动申请权限
|
|
* https://github.com/yhaolpz
|
|
*/
|
|
|
|
public class FloatActivity extends Activity {
|
|
|
|
private static List<PermissionListener> mPermissionListenerList;
|
|
|
|
@Override
|
|
protected void onCreate(Bundle savedInstanceState) {
|
|
super.onCreate(savedInstanceState);
|
|
if (Build.VERSION.SDK_INT >= 23){
|
|
requestAlertWindowPermission();
|
|
}
|
|
}
|
|
|
|
@RequiresApi(api = 23)
|
|
private void requestAlertWindowPermission() {
|
|
Intent intent = new Intent("android.settings.action.MANAGE_OVERLAY_PERMISSION");
|
|
intent.setData(Uri.parse("package:" + getPackageName()));
|
|
startActivityForResult(intent, 123);
|
|
}
|
|
|
|
|
|
@RequiresApi(api = 23)
|
|
@Override
|
|
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
|
|
super.onActivityResult(requestCode, resultCode, data);
|
|
if (Build.VERSION.SDK_INT >= 23){
|
|
//todo 用23以上编译即可出现canDrawOverlays
|
|
if (Util.hasPermission(this)) {
|
|
mPermissionListener.onSuccess();
|
|
} else {
|
|
mPermissionListener.onFail();
|
|
}
|
|
}
|
|
finish();
|
|
}
|
|
|
|
static synchronized void request(Context context, PermissionListener permissionListener) {
|
|
if (mPermissionListenerList == null) {
|
|
mPermissionListenerList = new ArrayList<>();
|
|
mPermissionListener = new PermissionListener() {
|
|
@Override
|
|
public void onSuccess() {
|
|
for (PermissionListener listener : mPermissionListenerList) {
|
|
listener.onSuccess();
|
|
}
|
|
}
|
|
|
|
@Override
|
|
public void onFail() {
|
|
for (PermissionListener listener : mPermissionListenerList) {
|
|
listener.onFail();
|
|
}
|
|
}
|
|
};
|
|
Intent intent = new Intent(context, FloatActivity.class);
|
|
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
|
|
context.startActivity(intent);
|
|
}
|
|
mPermissionListenerList.add(permissionListener);
|
|
}
|
|
|
|
|
|
private static PermissionListener mPermissionListener;
|
|
}
|
|
|