最近根据别人提示的一个想法,东拼西凑,终于实现了android系统中只能看到自己的系统,我称之为唯一系统。 很多企业做设备或是做产品的或是集成商 其中的一部分设备直接用android智能机。担是又不让

本文介绍了一种在Android系统中实现特定应用始终处于前台的方法,通过自启动、拦截Back键及Home键操作确保应用独占设备屏幕。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

最近根据别人提示的一个想法,东拼西凑,终于实现了android系统中只能看到自己的系统,我称之为唯一系统。
很多企业做设备或是做产品的或是集成商 其中的一部分设备直接用android智能机。担是又不让其它的应用干扰自己的应用,并想体现设备自己平台高融合性。所以就要求系统一启动就开始自己的应用,back 返回和home键最后都只能回到自己的应用主界面。
我就是根据这一构思东拼西凑了一个自己称之为唯一应用程序。
好了废话不多说了,现在讲讲怎么样我是怎么样拼凑的哈哈!因为刚接触android 所只能拼凑!
唯一应用关键在三个方面处理
1.开机自启动该应用
   开机自启动需要写一个广播类继承BroadcastReceiver类 并注册
  自定义广播类
  public class BootBroadcastReceiver extends BroadcastReceiver {
    static final String START_ACTION = "android.intent.action.BOOT_COMPLETED";
   
    @Override
    public void onReceive(Context context, Intent intent) {
        String action = intent.getAction();
        if(action.equals(START_ACTION)){
            Intent appIntent = new Intent();
            appIntent.setClass(context, MainActivity.class);
            appIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
            context.startActivity(appIntent);
        }
    }
}
系统注册:在AndroidManifest.xml中注册

<receiver android:name="com.example.onlyapp.BootBroadcastReceiver"
                    android:enabled="true" android:permission="android.permission.RECEIVE_BOOT_COMPLETED">
          <intent-filter>
            <action android:name="android.intent.action.BOOT_COMPLETED" />
            <category android:name="android.intent.category.DEFAULT"/>
           </intent-filter>
         </receiver>
提示权限
<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED"></uses-permission>
2.对back返回键进行处理
在主界面对back返回处理 相信这个大多数人都会
@Override
    public boolean onKeyDown(int keyCode, KeyEvent event) {
        if(keyCode==KeyEvent.KEYCODE_BACK){
            Toast toast = Toast.makeText(getApplicationContext(), "您正处在唯一应用主界面,无法再退!",1);
            toast.show();
            return false;
        }
        return this.CatchOnKeyDown(getApplicationContext(), keyCode, event);//这个方法是自己定义Activity基类里的 主要是为了统一处理处理home键事件
    }
下面是Activity基类上CatchOnKeyDown方法代码
    public boolean CatchOnKeyDown(Context context,int keyCode, KeyEvent event) {
        if(keyCode==KeyEvent.KEYCODE_HOME){
            Intent intent = new Intent();
            intent.setClass(context, MainActivity.class);
            intent.putExtra("come", "home");
            startActivity(intent);
            return true;
        }
        return super.onKeyDown(keyCode, event);
    }

3.对home键进行处理。
对home键处理 我这里写了一个基类供其它Activity继承代码如下:
public class OnlyAppActivity extends Activity {
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
    }

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        getMenuInflater().inflate(R.menu.main, menu);
        return true;
    }

    //这个是对home键处理的方法
    public boolean CatchOnKeyDown(Context context,int keyCode, KeyEvent event) {
        if(keyCode==KeyEvent.KEYCODE_HOME){
            Intent intent = new Intent();
            intent.setClass(context, MainActivity.class);
            intent.putExtra("come", "home");
            startActivity(intent);
            return true;
        }
        return super.onKeyDown(keyCode, event);
    }

    @Override
    public void onAttachedToWindow() {//一定要实现这个方法并设置因为home是系统键
        this.getWindow().setType(WindowManager.LayoutParams.TYPE_KEYGUARD);
        super.onAttachedToWindow();
    }
}
其它的Activity类继承OnlyAppActivity 这个类,并在重写的onKeyDown方法中调用CatchOnKeyDown这个方法
public class ThreeActivity extends OnlyAppActivity {
    private TextView textView;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.three);
        textView = (TextView) findViewById(R.id.textView3);
        textView.setText("欢迎来到唯一应用例子第三个界面");
    }
    @Override
    public boolean onKeyDown(int keyCode, KeyEvent event) {
        return this.CatchOnKeyDown(getApplicationContext(), keyCode, event);
    }
}
详细源码可下载 http://download.youkuaiyun.com/detail/java_web_jsp0/6804709 本资源0分放心下载
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

startzhou

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值