[持续更新]安卓6.0/Android M开发者预览版3更新内容大全

持续更新安卓6.0/ Android M开发者预览版3更新内容大全

简介

本文章主要介绍安卓6.0/ Android M开发者预览版3更新的详细内容。该预览版的更新主要是对先前版本的一些已知问题的修复和一些新增功能的添加。本文将会列举这些修改和新增功能,并对其中重要的信息进行一些补充和解析。

更新内容

1. 权限控制

Android M相对于以前的版本,在权限控制上有了大量的改进。这一部分的更新主要增加了以下内容:

  • 运行时权限:
    相比以前,Android M 为应用程序开发加入了运行时权限的控制,当应用程序需要使用权限时,系统将会提醒用户是否同意授权;当程序正在使用的权限遭到撤销时,系统也将会提醒用户。

代码示例:

if (ContextCompat.checkSelfPermission(thisActivity,
                Manifest.permission.READ_CONTACTS)
        != PackageManager.PERMISSION_GRANTED) {

    // Permission is not granted
    // Should we show an explanation?
    if (ActivityCompat.shouldShowRequestPermissionRationale(thisActivity,
            Manifest.permission.READ_CONTACTS)) {
        // Show an explanation to the user asynchronously -- don't block
        // this thread waiting for the user's response! After the user
        // sees the explanation, try again to request the permission.
    } else {
        // No explanation needed; request the permission
        ActivityCompat.requestPermissions(thisActivity,
                new String[]{Manifest.permission.READ_CONTACTS},
                MY_PERMISSIONS_REQUEST_READ_CONTACTS);

        // MY_PERMISSIONS_REQUEST_READ_CONTACTS is an
        // app-defined int constant. The callback method gets the
        // result of the request.
    }
}
  • 应用程序默认权限:
    在 Android M当中,应用程序默认授予了相对较少的权限,需要由用户手动去授权。

代码示例:

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
   package="com.example.myapplication">

   <uses-permission android:name="android.permission.READ_CONTACTS" />
   <uses-permission android:name="android.permission.WRITE_CONTACTS" />

   <application ... />

</manifest>

2. 新增的API

  • App Links API:
    新增加的App Links API提供了能够在应用程序内部打开网页链接的功能。通过这个API,当用户点击一个带有特殊标记(domain-association或者autoVerify="true")的web页链接时,手机将会自动唤醒相应的应用程序。

代码示例:

public class MainActivity extends Activity {

  ...

  public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    setContentView(R.layout.main_activity);

    // When user shares with our app we set a flag to remember it
    if ("com.example.myapplication.VIEW".equals(getIntent().getAction())) {
      SharedPreferences preferences = PreferenceManager.getDefaultSharedPreferences(this);
      SharedPreferences.Editor editor = preferences.edit();
      editor.putBoolean("hasShared", true);
      editor.commit();
    }

    // Only show the share button if a previous share has taken place
    findViewById(R.id.share_button).setVisibility(hasShared() ? View.VISIBLE : View.GONE);
  }

  /**
   * Gets whether the user has already shared something with us
   */
  private boolean hasShared() {
    SharedPreferences preferences = PreferenceManager.getDefaultSharedPreferences(this);
    return preferences.getBoolean("hasShared", false);
  }

  /**
   * Starts the share flow
   */
  public void onShareClicked(View view) {
    Intent intent = new Intent(Intent.ACTION_VIEW);
    intent.setData(Uri.parse("http://example.com/myapplink"));
    startActivity(intent);
  }
}
  • Fingerprint API:
    Android M新增加的指纹API使得开发人员可以在自己的应用程序内部使用指纹识别技术。该API会检查是否已经有指纹硬件以及相应的权限,然后通过使用指纹识别技术来获取认证信息,从而完成用户控制认证的操作。

代码示例:

public class MainActivity extends AppCompatActivity {

    private FingerprintManager fingerprintManager;
    private KeyguardManager keyguardManager;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        // 获取设备管理服务
        fingerprintManager = (FingerprintManager) getSystemService(Context.FINGERPRINT_SERVICE);
        keyguardManager = (KeyguardManager) getSystemService(Context.KEYGUARD_SERVICE);

        // 检查设备是否支持指纹识别
        if (!fingerprintManager.isHardwareDetected()) {
            // 若不支持则结束程序
            Toast.makeText(this, "您的设备不支持指纹识别",Toast.LENGTH_LONG).show();
            finish();
        } else if (ActivityCompat.checkSelfPermission(this, Manifest.permission.USE_FINGERPRINT) != PackageManager.PERMISSION_GRANTED) {
            // 检查应用是否有权限使用指纹识别
            Toast.makeText(this, "请到设置中开启指纹权限",Toast.LENGTH_LONG).show();
            ActivityCompat.requestPermissions(this,new String[]{Manifest.permission.USE_FINGERPRINT},1);
        } else if (!keyguardManager.isKeyguardSecure()) {
            // 检查手机是否开启密码
            Toast.makeText(this, "请到设置中开启密码",Toast.LENGTH_LONG).show();
        } else if (!fingerprintManager.hasEnrolledFingerprints()) {
            // 检查用户是否录入指纹
            Toast.makeText(this, "请到设置中录入指纹",Toast.LENGTH_LONG).show();
        } else {
            Toast.makeText(this, "指纹识别已就绪",Toast.LENGTH_LONG).show();
        }
    }
}

结论

本文列举了Android M开发者预览版3的一些重要更新,特别是对于权限控制和新增的API进行了详细的介绍和示例。通过对这些新功能的深入了解,开发者们可以更好地掌握Android M的特性,更高效地开发出更加优秀的应用程序。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:[持续更新]安卓6.0/Android M开发者预览版3更新内容大全 - Python技术站

(0)
上一篇 2023年6月26日
下一篇 2023年6月26日

相关文章

  • 分享Android开发自学笔记之AndroidStudio常用功能

    分享Android开发自学笔记之AndroidStudio常用功能攻略 介绍 本攻略将详细讲解AndroidStudio中的常用功能,帮助您更好地进行Android开发。以下是一些示例说明。 1. 代码自动补全 AndroidStudio提供了强大的代码自动补全功能,可以大大提高编码效率。当您输入代码时,它会根据上下文和已有的代码提示您可能需要的代码片段。 …

    other 2023年8月25日
    00
  • 局域网如何共享文件、共享文件设置密码、共享文件夹监控的方法

    下面是局域网如何共享文件、共享文件设置密码、共享文件夹监控的方法的详细攻略: 局域网共享文件的方法 步骤一:在需要共享文件的电脑上打开共享设置 在需要共享文件的电脑上,进入控制面板,找到文件共享中心,选择“启用文件和打印机共享”。 步骤二:设定文件夹共享权限 在共享设置中,选择需要共享的文件夹,并设置共享权限,可以选择“每个人”或“特定的人”进行共享。 步骤…

    other 2023年6月27日
    00
  • Java面试题冲刺第六天–网络编程1

    这里是Java面试题冲刺第六天–网络编程1的完整攻略。 网络编程基础 计算机网络体系结构 计算机网络体系结构分为五层,自下而上分别为物理层,数据链路层,网络层,传输层和应用层。其中应用层是最上层,为用户直接提供服务。 IP地址和端口号 IP地址和端口号是计算机在网络上进行通信的两个重要组成部分。IP地址是唯一标识一个计算机在网络中的位置,端口号则是唯一标识…

    other 2023年6月27日
    00
  • java获取系统路径字体、得到某个目录下的所有文件名、获取当前路径

    获取系统路径字体:在Java中,我们可以使用GraphicsEnvironment类来获取当前系统可用的字体名称,使用方法如下: import java.awt.*; public class FontNameDemo { public static void main(String[] args) { GraphicsEnvironment e = Gra…

    other 2023年6月26日
    00
  • Android自定义View实现五子棋游戏

    Android自定义View实现五子棋游戏攻略 1. 创建自定义View 首先,我们需要创建一个自定义View来实现五子棋游戏的界面。在Android中,我们可以继承View类来创建自定义View。 public class GobangView extends View { // 实现自定义View的代码 } 2. 初始化游戏 在自定义View中,我们需要…

    other 2023年9月7日
    00
  • Android原生集成RN最新版教程

    下面是针对“Android原生集成RN最新版教程”的完整攻略。 什么是Android原生集成RN Android原生集成RN是指将React Native(以下简称RN)框架集成到Android原生应用程序中,在Android原生应用程序中使用RN开发页面和模块。RN是Facebook推出的跨平台开发框架,使得开发者可以用相同的代码基础编写iOS和Andro…

    other 2023年6月26日
    00
  • ASP.NET中 RadioButtonList 单选按钮组控件的使用方法

    当我们需要在ASP.NET web应用程序中实现单选按钮的选择功能时,可以使用RadioButtonList这一控件。以下是ASP.NET中RadioButtonList控件的使用方法: 步骤1- 创建RadioButtonList控件 在ASP.NET web应用程序中,我们可以通过如下代码在网页中创建一个RadioButtonList: <asp:…

    other 2023年6月26日
    00
  • JavaScript匿名函数之模仿块级作用域

    当我们在JavaScript中使用匿名函数时,可以模仿块级作用域。块级作用域是指在代码块内部定义的变量只在该代码块内部可见,而在代码块外部是不可见的。在ES6之前,JavaScript只有全局作用域和函数作用域,没有块级作用域。但是通过使用匿名函数,我们可以创建一个局部作用域,从而模仿块级作用域的效果。 下面是模仿块级作用域的完整攻略: 使用立即执行函数表达…

    other 2023年8月19日
    00
合作推广
合作推广
分享本页
返回顶部