今天写了个小demo,主要功能:从A应用打开B应用,打开B只会弹出一个View提示。
其实当时想到,其他的App又不是我写的,我怎么能弹出View呢。后来想想也不难只是我的思路错了。
主要就是获取WindowManager就好了
;
发个图,打开了一个叫"萤Wifi的软件",UI很丑,不要吐槽啊,功能能看就好了
权限别拉下了:
<uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW" />
代码如下
package com.example.dialogdemo;
import android.app.Activity;
import android.content.ActivityNotFoundException;
import android.content.Context;
import android.content.Intent;
import android.os.Bundle;
import android.util.Log;
import android.view.Gravity;
import android.view.LayoutInflater;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.WindowManager;
public class MainActivity extends Activity {
private String pkg = "XXXXXXXXXXX"; //应用包名
private String TAG = "MainActivity";
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
findViewById(R.id.button1).setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
startApp(MainActivity.this, pkg);
new MyThread().run();
}
});
}
private class MyThread extends Thread {
@Override
public void run() {
super.run();
try {
Thread.sleep(4 * 1000);
} catch (InterruptedException e) {
e.printStackTrace();
}
creatDialog();
}
}
private void creatDialog() {
// 创建LayoutParams
WindowManager.LayoutParams layoutParams = new WindowManager.LayoutParams();
// 设置窗口的类型
layoutParams.type = WindowManager.LayoutParams.TYPE_SYSTEM_ALERT | WindowManager.LayoutParams.TYPE_SYSTEM_OVERLAY;
// 设置行为选项
layoutParams.flags = WindowManager.LayoutParams.FLAG_NOT_TOUCH_MODAL | WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE;
// 设置透明度
layoutParams.alpha = 80;
layoutParams.gravity = Gravity.CENTER;
// 设置宽高
layoutParams.width = WindowManager.LayoutParams.WRAP_CONTENT;
layoutParams.height = WindowManager.LayoutParams.WRAP_CONTENT;
// 添加到View到窗口
final WindowManager windowManager = (WindowManager) getApplicationContext().getSystemService(WINDOW_SERVICE);
// 创建需要添加的View
final View view = LayoutInflater.from(this).inflate(R.layout.dialog_, null);
view.findViewById(R.id.button1).setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
windowManager.removeView(view);
}
});
windowManager.addView(view, layoutParams);
}
/**
* 启动APP
*
* @param context
* @param pkg
*/
public void startApp(Context context, String pkg) {
try {
Intent intent = context.getPackageManager().getLaunchIntentForPackage(pkg);
context.startActivity(intent);
} catch (ActivityNotFoundException e) {
Log.e(TAG, "APP Error:" + e.getMessage());
}catch (Exception e) {
Log.e(TAG, "APP Error:" + e.getMessage());
}
}
}
就这样不发Demo了,这个很简单。好像小米不行,小米的设置里有个悬浮框显示或者不显示的设置,无力吐槽。
4185

被折叠的 条评论
为什么被折叠?



