public class UsbStateReceiver extends BroadcastReceiver { //BroadcastReceiver
private String TAG = "UsbStateReceiver";
public static final int USB_STATE_ON = 0x00021;
public static final int USB_STATE_OFF = 0x00022;
private static final int GET_RUNNING_TASKS_NUM = 30;
private static final String PACKAGE_NAME = "com.memo.filemanager";
private static Handler mHandler;
public static Handler getHandler() {
return mHandler;
}
public static void setHandler(Handler handler) {
mHandler = handler;
}
private static int number = 0;
@Override
public void onReceive(final Context context, Intent intent) {
if ( number++ == 0) {
return;
}
Message msg = new Message();
String action = intent.getAction();
if (action.equals(Intent.ACTION_MEDIA_EJECT)) {
//USB设备移除,更新UI
Log.d( TAG, "USB:ACTION_MEDIA_EJECT");
msg.what = USB_STATE_OFF;
} else if (action.equals(Intent.ACTION_MEDIA_MOUNTED)) {
//USB设备挂载,更新UI
Log.d( TAG, "USB:ACTION_MEDIA_MOUNTED");
msg.what = USB_STATE_ON;
ActivityManager am = (ActivityManager) context.getSystemService(Context.ACTIVITY_SERVICE);
RunningTaskInfo taskinfo = am.getRunningTasks(1).get(0); // 获取到当前正在栈顶运行的Activity。
String packname = taskinfo.topActivity.getPackageName(); // 获取到当前任务栈顶程序所对应的包名。
if( !packname.equals(PACKAGE_NAME) ) {
/*
final MyDialog confirmDialog = new MyDialog(context, "使用文件管理器打开U盘?", "确定", "取消");
confirmDialog.setClicklistener(new MyDialog.ClickListenerInterface() {
@Override
public void doConfirm() {
confirmDialog.dismiss();
Intent i = new Intent(context, MainActivity.class);
i.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
i.putExtra("Selected", "Removable Disk");
context.startActivity(i);
}
@Override
public void doCancel() {
confirmDialog.dismiss();
}
});
confirmDialog.getWindow().setType(WindowManager.LayoutParams.TYPE_SYSTEM_ALERT);
confirmDialog.show();
*/
Intent i = new Intent(context, MainActivity.class);
if( isRunningTask(context)) {
i.addFlags(Intent.FLAG_ACTIVITY_BROUGHT_TO_FRONT);
} else {
i.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
}
i.putExtra("Selected", "Removable Disk");
context.startActivity(i);
}
}
if( mHandler != null ) {
mHandler.sendMessage(msg);
}
}
public boolean isRunningTask(Context context){
ActivityManager am = (ActivityManager) context.getSystemService(Context.ACTIVITY_SERVICE);
List<RunningTaskInfo> tasks= am.getRunningTasks(GET_RUNNING_TASKS_NUM);
Iterator<RunningTaskInfo> itInfo = tasks.iterator();
while( itInfo.hasNext() ){
RunningTaskInfo info = itInfo.next();
String packname = info.baseActivity.getPackageName();
if( packname.equals(PACKAGE_NAME) ) {
return true;
}
}
return false;
}
public boolean isRunningProcess( Context context ) {
PackageManager pm = context.getPackageManager();
ActivityManager am = (ActivityManager) context.getSystemService(Context.ACTIVITY_SERVICE);
List<RunningAppProcessInfo> appProcessList = am.getRunningAppProcesses();
ApplicationInfo appInfo = null;
for (RunningAppProcessInfo appProcessInfo : appProcessList) {
try {
appInfo = pm.getApplicationInfo(appProcessInfo.processName, 0);
} catch (PackageManager.NameNotFoundException e) {
e.printStackTrace();
}
if(appInfo.packageName.equals(PACKAGE_NAME)) {
return true;
}
}
return false;
}
}
android中对u盘以及tf卡插入的广播监听
最新推荐文章于 2025-05-14 23:51:57 发布