Android蓝牙连接

我这给this应该换成什么
我之前把this改写成MainActivity,但好像也不对

img

checkSelfPermission函数的第一个参数是Context,可以传递当前Activity实例,例如在上述代码中可以使用this或MainActivity.this作为第一个参数。Context是Android应用程序的上下文环境,可以用于访问应用的资源和管理生命周期。Manifest.permission.BLUETOOTH_SCAN是需要检查的权限,可以在AndroidManifest.xml中声明,例如。检查权限的结果将决定是否需要请求用户授权,如果权限已经被授予,则可以直接使用蓝牙功能。

  • 这篇博客: Android 锁屏功能中的 第三步、 mainactivity的完整代码: 部分也许能够解决你的问题, 你可以仔细阅读以下内容或跳转源博客中阅读:
  • 
    public class MainActivity extends AppCompatActivity {
        DevicePolicyManager dpm;
    
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
            lock();
        }
    
        //锁屏
        private void lock() {
            dpm = (DevicePolicyManager) getSystemService(DEVICE_POLICY_SERVICE);
            ComponentName componentName = new ComponentName(this, MyDeviceAdminReceiver.class);
            // 判断该组件是否有系统管理员的权限
            boolean isAdminActive = dpm.isAdminActive(componentName);
    
            if (!isAdminActive) {//这一句一定要有...
                Intent intent = new Intent();
                intent.setAction(DevicePolicyManager.ACTION_ADD_DEVICE_ADMIN);
                intent.putExtra(DevicePolicyManager.EXTRA_DEVICE_ADMIN, componentName);
                startActivityForResult(intent, 101);
            }
            //isAdminActive 为false,直接调用dpm.lockNow()会报java.lang.SecurityException: No active admin owned by uid 10510 for policy #3
            if (isAdminActive) {
                dpm.lockNow();
                //杀掉进程
                android.os.Process.killProcess(android.os.Process.myPid());
            }
        }
    
        @Override
        protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {
            super.onActivityResult(requestCode, resultCode, data);
            //这种方式可能会造成自动重启
    //        android.os.Process.killProcess(android.os.Process.myPid());
            //授权技术关闭应用
            finish();
        }
    }
    

    最后将mainactivity的主题设置为透明,就可以了;

     

    体验APP地址

  • 以下回答由chatgpt基于相关博客总结生成:

    针对你所提出的问题,this关键字表示当前对象,可以在当前对象中使用它来调用当前对象中的其他方法或变量。在Android开发中,常见的应用场景是在activity中使用this关键字。在activity中,this关键字通常用来代替activity本身。例如,在按钮点击事件中,我们需要打开新的activity或者执行其他操作,可以使用this.startActivity或者this.finish等语句。

    但是,this关键字不一定要代替activity本身,可以代替其他对象。例如,在使用BroadcastReceiver接收系统消息的时候,可以在onReceive函数中使用this关键字代替当前BroadcastReceiver对象。

    总之,this关键字的具体使用应该根据具体情况来决定。一般情况下,可以将this替换为当前对象,但是如果需要传递其他对象或数据,则需要使用其他变量来代替this。

    对于你提供的参考资料,其中涉及到了一些Android开发中常用的技巧和代码示例,可以作为参考。但是,这些代码并不直接回答你的问题,你可以结合自己的实际情况,使用this关键字或其他变量对代码进行优化和修改。如果你有进一步的问题或疑问,可以在讨论区继续提出,我们会尽力解答。

context是上下文的意思,简单来说就是当前的窗口主体,在安卓中呢,一般是activity来表示当前显示的页面和窗口主体。
你这里用this,其他他指向的是回调用的监听器OnClickListener

img


你应该用当前activity的类名 比如(MainActivity.this)来作为上下文。
如果不是activity,你应该从调用他的的activity中传一个context