android 7禁止状态栏下拉,Android 禁止状态栏下拉

public class MainActivity extends AppCompatActivity implements View.OnClickListener {

private Object statusBarManagerService;

private Method methodDisable;

private TextView tvInfo;

// SCREENPINNING_MODE_FLAG = StatusBarManager.DISABLE_NONE

// | StatusBarManager.DISABLE_EXPAND

// | StatusBarManager.DISABLE_NOTIFICATION_ICONS

// | StatusBarManager.DISABLE_NOTIFICATION_ALERTS

// // | StatusBarManager.DISABLE_CLOCK

// // | StatusBarManager.DISABLE_SYSTEM_INFO

// | StatusBarManager.DISABLE_HOME

// | StatusBarManager.DISABLE_SEARCH

// | StatusBarManager.DISABLE_BACK

// | StatusBarManager.DISABLE_RECENT;

private final static int SCREENPINNING_MODE_FLAG = 57081856;

private final static int NORMAL_MODE_FLAG = 0;

private final static int SCREENPINNING_MODE_WITH_BACK_FLAG = 52887552;

private final static int DATE_SETTINGS_REQUEST = 0;

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_main);

Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);

setSupportActionBar(toolbar);

FloatingActionButton fab = (FloatingActionButton) findViewById(R.id.fab);

fab.setOnClickListener(new View.OnClickListener() {

@Override

public void onClick(View view) {

Snackbar.make(view, "Replace with your own action", Snackbar.LENGTH_LONG)

.setAction("Action", null).show();

}

});

tvInfo = (TextView) findViewById(R.id.tv_info);

// Get android @hide class android.app.StatusBarManager by reflection.

try

{//反射拿到状态栏管理器

Class clsStatusBarManager = Class.forName("android.app.StatusBarManager");

Context appContext = getApplicationContext();

if (appContext != null) {

statusBarManagerService = appContext.getSystemService("statusbar");

methodDisable = clsStatusBarManager.getMethod("disable", int.class);

}

} catch (ClassNotFoundException e) {

reflectionError(e);

} catch (NoSuchMethodException e) {

reflectionError(e);

}

}

private void reflectionError(Exception ex) {

tvInfo.setBackgroundColor(Color.RED);

tvInfo.setText("reflection error: " + ex.toString());

}

private void disableStatusBar(int flag) {

try {//实现的核心.

methodDisable.invoke(statusBarManagerService, flag);

} catch (IllegalAccessException e) {

reflectionError(e);

} catch (InvocationTargetException e) {

reflectionError(e);

}

}

@Override

public void onClick(View v) {

switch (v.getId()) {

case R.id.bt_pin: {

disableStatusBar(SCREENPINNING_MODE_FLAG);

break;

}

case R.id.bt_unpin: {

disableStatusBar(NORMAL_MODE_FLAG);

break;

}

}

}

@Override

public boolean onCreateOptionsMenu(Menu menu) {

// Inflate the menu; this adds items to the action bar if it is present.

getMenuInflater().inflate(R.menu.menu_main, menu);

return true;

}

@Override

public boolean onOptionsItemSelected(MenuItem item) {

// Handle action bar item clicks here. The action bar will

// automatically handle clicks on the Home/Up button, so long

// as you specify a parent activity in AndroidManifest.xml.

int id = item.getItemId();

//noinspection SimplifiableIfStatement

if (id == R.id.action_settings) {

// Enable BACK button to return from Settings

disableStatusBar(SCREENPINNING_MODE_WITH_BACK_FLAG);

startActivityForResult(new Intent(Settings.ACTION_DATE_SETTINGS), DATE_SETTINGS_REQUEST);

return true;

}

return super.onOptionsItemSelected(item);

}

protected void onActivityResult(int requestCode, int resultCode,

Intent data) {

if (requestCode == DATE_SETTINGS_REQUEST) {

// Disable BACK button when returning from Settings

disableStatusBar(SCREENPINNING_MODE_FLAG);

}

}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值