首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Android将自定义图标设置为标记在Marshmallow中返回null

在Marshmallow(Android 6.0)中,如果尝试将自定义图标设置为应用程序的标记,可能会返回null。这是由于Android在Marshmallow中引入了运行时权限的概念,其中包括读取和写入外部存储的权限。如果应用程序没有获得适当的权限,尝试设置自定义图标将返回null。

为了解决这个问题,您可以按照以下步骤操作:

  1. 确保您的应用程序在AndroidManifest.xml文件中声明了适当的权限。对于读取和写入外部存储,您需要添加以下权限声明:
代码语言:xml
复制
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
  1. 在运行时,您需要请求这些权限。您可以使用以下代码示例请求权限:
代码语言:java
复制
private static final int REQUEST_CODE = 1;

// 请求权限
if (ContextCompat.checkSelfPermission(this, Manifest.permission.READ_EXTERNAL_STORAGE)
        != PackageManager.PERMISSION_GRANTED) {
    ActivityCompat.requestPermissions(this,
            new String[]{Manifest.permission.READ_EXTERNAL_STORAGE},
            REQUEST_CODE);
}

// 处理权限请求的结果
@Override
public void onRequestPermissionsResult(int requestCode, String[] permissions, int[] grantResults) {
    if (requestCode == REQUEST_CODE) {
        if (grantResults.length > 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED) {
            // 权限已授予,可以设置自定义图标
        } else {
            // 权限被拒绝,无法设置自定义图标
        }
    }
}
  1. 在获得适当的权限后,您可以使用以下代码将自定义图标设置为应用程序的标记:
代码语言:java
复制
// 获取应用程序的包名
String packageName = getApplicationContext().getPackageName();

// 获取自定义图标的文件路径
String iconPath = Environment.getExternalStorageDirectory() + "/custom_icon.png";

// 创建ComponentName对象
ComponentName componentName = new ComponentName(packageName, packageName + ".MainActivity");

// 创建ShortcutInfo对象
ShortcutInfo shortcutInfo = new ShortcutInfo.Builder(getApplicationContext(), "shortcut_id")
        .setShortLabel("Shortcut")
        .setIcon(Icon.createWithBitmap(BitmapFactory.decodeFile(iconPath)))
        .setIntent(new Intent(Intent.ACTION_MAIN).setComponent(componentName))
        .build();

// 创建ShortcutManager对象
ShortcutManager shortcutManager = getSystemService(ShortcutManager.class);

// 动态添加快捷方式
shortcutManager.setDynamicShortcuts(Arrays.asList(shortcutInfo));

请注意,上述代码中的"custom_icon.png"是自定义图标的文件路径,您需要将其替换为您自己的图标文件路径。

这是一个解决在Marshmallow中将自定义图标设置为应用程序标记返回null的方法。通过请求适当的权限并使用ShortcutManager类,您可以成功设置自定义图标作为应用程序的标记。

腾讯云相关产品和产品介绍链接地址:

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

浅谈Android自定义锁屏页的发车姿势

一、为什么需要自定义锁屏页 锁屏作为一种黑白屏时代就存在的手机功能,至今仍发挥着巨大作用,特别是触屏时代的到来,锁屏的功用被发挥到了极致。多少人曾经在无聊的时候每隔几分钟划开锁屏再关上,孜孜不倦,其酸爽程度不亚于捏气泡膜。确实,一款漂亮的锁屏能为手机增色不少,但锁屏存在的核心目的主要是三个:保护自己手机的隐私,防止误操作,在不关闭系统软件的情况下节省电量。 当下,各个款式的手机自带的系统锁屏完全能够满足这些需求,而且美观程度非凡,那么开发者为什么仍然需要构建自定义锁屏呢?让我们试想一个场景,一位正在使用音乐

08

浅谈 Android 自定义锁屏页的发车姿势

一、为什么需要自定义锁屏页   锁屏作为一种黑白屏时代就存在的手机功能,至今仍发挥着巨大作用,特别是触屏时代的到来,锁屏的功用被发挥到了极致。多少人曾经在无聊的时候每隔几分钟划开锁屏再关上,孜孜不倦,其酸爽程度不亚于捏气泡膜。确实,一款漂亮的锁屏能为手机增色不少,但锁屏存在的核心目的主要是三个:保护自己手机的隐私,防止误操作,在不关闭系统软件的情况下节省电量。   当下,各个款式的手机自带的系统锁屏完全能够满足这些需求,而且美观程度非凡,那么开发者为什么仍然需要构建自定义锁屏呢?让我们试想一个场景,一位正在

09
  • Android开发笔记(一百零四)消息推送SDK

    推送:从服务器把消息实时发到客户端app上,这就是推送,推送可用于发送系统通知、发送推荐信息、发送聊天消息等等。 别名:用于给移动设备取个好记的名字,比如电脑有计算机名,可以把别名理解为开发者给移送设备起的外号。不过,多个移动设备可以起一样的别名,这几个设备就会同时收到发给该别名的消息。 标记:用于给移动设备打标签,可以理解为分类,比如超市里的泰国大米既可以打上“粮食制品”的标签,也可以打上“进口商品”的标签。服务器可以统一给某个种类的移动设备发送消息;如果移动设备打上本设备手机号码的标签,那么服务器就能该号码的手机单独发消息。 自定义消息:推送的消息内容一般由sdk直接展示在系统的通知栏,不过有时候我们希望由自己控制展示通知的时机,比如说要预先处理某项事务,或者说以对话框形式展现消息等等,在这些时候,自定义消息就派上用场了,app可以先接收服务器发来的自定义消息,然后自主选择接下来的处理逻辑。

    01

    Android开发笔记(一百三十三)导航视图NavigationView

    很多App都有个人中心的侧滑菜单,通常在页面左侧边缘右拉时,即可弹出个人中心的菜单页面。对于Android来说,侧滑功能用到了抽屉布局DrawerLayout,我们只要把页面的根布局设置为DrawerLayout,并指定弹出的侧滑视图,就能通过右拉页面左侧边缘,从而拉出定义好的侧滑视图。 有关DrawerLayout的详细说明参见《Android开发笔记(一百二十)两种侧滑布局》,这里就不再赘述了,接下来要介绍的是Android自带的导航视图NavigationView,它是一个侧滑菜单控件,常常用来展示个人中心页面,以及导航菜单栏目。比如下面这个图片,便是从CSDN的App个人中心页面截图而来。

    04
    领券