首页
学习
活动
专区
工具
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系统源码剖析(一)---Settings

R.string.settings_label); } onIsMultiPane()判断是否双屏幕MultiPane,平板双屏显示,手机一般单屏SinglePane显示,所以onIsMultiPane()方法可以设置返回...如果满足条件就利用highlightHeader()方法亮所选择的header进行区别于其他headers,并且将导航栏title定为设置,保证不被覆盖。...if (onIsMultiPane()) { //导航栏左上角图标的左边是否显示返回图标,false表示不显示 getActionBar().setDisplayHomeAsUpEnabled...,则对导航栏左上角程序图标以及返回图标设置 接下来是利用savedInstanceState恢复数据的操作,不再贴出 showBreadCrumbs(mCurrentHeader.title, null...Android4.4以下版本,保证不出异常 (6)onNewIntent:activity启动模式singletask单任务模式,如果在战存在activity的实例,当再次通过intent调起时不会再去

2.1K20

Android 桌面角二三事

在需要的位置调用设置桌面角 setHuaweiBadge(getApplicationContext(), 10); 注意事项 Bundle 参数的 class 并非固定的 MainActivity...认真阅读官方文档,发现消息类型不能是进度条样式和常驻通知,注意需要 setOngoing(false); 小米的桌面角在点击当前推送消息或点击应用图标时,会自动取消角数,不用单独处理; 小米的桌面角方式应用场景相对较少...发送广播,参数传递内容基本与华为方式一致,注意 class_name 启动页完整路径 private static void setSumsungBadge(Context context, int...,其中可设置 ids 对多图标设置,和尚仅尝试了主 app 图标展示; 集成方式 1....可根据 ids 对具体图标进行角展示,也可以简化直接设置图标 private static void setZUKBadge(Context context, int count) {

2.5K21
  • Android 13 SDK更新内容

    (也就是开始完整支持JDK11了) 按应用设定的语言偏好设置:也就是说,用户系统语言中文,也允许用户在应用内部选择其他语言偏好,将当前app的语言偏好设置其他语言。...(例如用户只想将某个app设置英文,其他应用还是中文。那么这个就派上用场了。) 预测性返回手势:就是当用户在只想返回手势的时候,提供预览动画提前告诉用户返回后将会回到的界面。...让用户决定是否继续操作或者放弃返回。(该功能默认不开启,如果程序自定义返回导航,那这个功能就要改代码,如果原先就由系统处理返回导航。那么只需要直接启动功能就可以实现)。...带主题的应用图标:我们如果配置了自适应图标以及单色应用图标然后在mainfase文件开启。那么当用户启动了带主题的应用图标。...AGSL 与 GLSL 共用大部分语法,但可用于 Android 渲染引擎以自定义 Android 画布的绘制行为以及过滤 View 内容。可以用着色器来实现涟漪效果,模糊,以及拉伸滚动。

    2.1K10

    Android开发笔记(一百六十八)应用绑定通知渠道并展示消息角

    下面便是NotificationChannel提供的属性设置方法说明: setSound:设置推送通知之时的铃声,若设为null表示静音推送。..., null); // 设置推送通知之时的铃声。...原本通知渠道提供了setShowBadge方法,可设置是否在应用图标的右上角展示小红点(此红点又称消息角),调用该方法设置true之后,有未读消息时就显示红点,无未读消息则不显示红点。...// 小米手机还要进入设置里面的应用管理,开启当前App的“显示桌面图标” showBadgeOfMIUI(count, notify); // 小米手机MIUI系统的消息角...} 不管是华为方案还是小米方案,若想清除桌面上的应用红线,只要调用上面方法设置消息数量0即可。

    1.8K40

    应用绑定通知渠道并展示消息角

    下面便是NotificationChannel提供的属性设置方法说明: setSound:设置推送通知之时的铃声,若设为null表示静音推送。..., null); // 设置推送通知之时的铃声。...原本通知渠道提供了setShowBadge方法,可设置是否在应用图标的右上角展示小红点(此红点又称消息角),调用该方法设置true之后,有未读消息时就显示红点,无未读消息则不显示红点。...// 小米手机还要进入设置里面的应用管理,开启当前App的“显示桌面图标”         showBadgeOfMIUI(count, notify); // 小米手机MIUI系统的消息角    ...} 不管是华为方案还是小米方案,若想清除桌面上的应用红线,只要调用上面方法设置消息数量0即可。

    2.4K30

    Android 6.0 Permission权限与安全机制

    Marshmallow版本权限修改   android的权限系统一直是首要的安全概念,因为这些权限只在安装的时候被询问一次。...所以targetSdkVersion如果没有设置23版本或者以上,系统还是会使用旧规则:在安装的时候赋予该app所申请的所有权限。...支持Marshmallow新版本权限机制   在Android M的api,我们可以通过checkSelfPermission检测软件是否有某一项权限,以及使用requestPermissions去请求一组权限...; 第二次请求权限时,用户拒绝了,并选择了“不再提醒”的选项时:shouldShowRequestPermissionRationale()返回 false; 设备的系统设置禁止当前应用获取这个权限的授权...当然最重要的是不要忘了每个权限检查“不再提醒”的设置

    1.7K40

    Support Annotation Library使用详解

    在下面的代码例子,我们有一个取值null的name变量,它被作为参数传递给sayHello函数,而该函数要求这个参数是非null的String类型: public class MainActivity...在Android开发,整型不仅用来代表资源引用值,还可以用来代表枚举,IntDef注解就是用来定义整型的新注解,我们可以用来标记我们自己编写的api,例如: public class IceCreamFlavourManager...如果我们把@Flavour定义如下标志位。...权限注解 在Android,有很多场景都需要使用权限,无论是Marshmallow之前还是之后的动态权限管理.都需要在manifest中进行声明,如果忘记了,则会导致程序崩溃....@Keep注解 在Android编译生成APK的环节,我们通常需要设置minifyEnabledtrue实现下面的两个效果 混淆代码 删除没有用的代码 但是出于某一些目的,我们需要不混淆某部分代码或者不删除某处代码

    86380

    Android O 新特性和行为变更总结

    ,比如修改通知渠道的优先级,如果支持的话,用户还可以去声明通知是否同时显示应用的角。...Android O 还引入了通知角,当一个应用的通知没有 dismiss 的时候,会在应用的图标上面显示一个角,长摁这个应用的图标,也会显示通知的详情信息: O 版本弃用了对单个通知设置优先级的功能...1.3 自适应图标 为了帮助开发者更好的与设备 UI 集成,Android O 支持创建自适应图标,系统可以基于设备选择的蒙版将这些图标显示不同形状。...系统还将实现与图标的自动交互,并在启动器、快捷方式、设置、共享对话框以及概览屏幕中使用它们: 可以通过定义两层图层(前景和背景)来指定桌面图标外观,必须提供没有形状和阴影的 PNG 格式图象作为图层...: 在以前的 Android 版本图标大小定义 48 x 48 dp,但是现在必须按照以下的规范定义图层大小: 两张图层大小都必须 108 x 108 dp。

    1.3K30

    Android O 新特性和行为变更总结

    1.1 通知变更 Android O 版本重新设计了通知,让通知的管理更加方便,首先引入了通知渠道用来让用户统一管理通知,当 targetApi 设置 O 版本时,必须要实现一个或多个通知渠道,如果设置...Android O 还引入了通知角,当一个应用的通知没有 dismiss 的时候,会在应用的图标上面显示一个角,长摁这个应用的图标,也会显示通知的详情信息: [1506563471382_2377_...1.3 自适应图标 为了帮助开发者更好的与设备 UI 集成,Android O 支持创建自适应图标,系统可以基于设备选择的蒙版将这些图标显示不同形状。...系统还将实现与图标的自动交互,并在启动器、快捷方式、设置、共享对话框以及概览屏幕中使用它们: [image.gif] [1506563815453_9865_1506563807293.gif] 可以通过定义两层图层...(前景和背景)来指定桌面图标外观,必须提供没有形状和阴影的 PNG 格式图象作为图层: [image.gif] 在以前的 Android 版本图标大小定义 48 x 48 dp,但是现在必须按照以下的规范定义图层大小

    3.1K20

    Android Jetpack架构组件(十)之Slices

    Slice源码 三、 Slice模板 3.1 定义 Slice 模板 Slice是通过ListBuilder类来创建的,在ListBuilder,我们可以添加不同类型的行模块在应用中进行展示。...图标按钮 默认切换开关 自定义切换开关 SliceAction 由模板构建器调用,我们可以为 SliceAction 定义一种图片模式,该模式决定了如何为操作呈现图片,图片模式的常量如下。...ICON_IMAGE:超小尺寸,可着色 SMALL_IMAGE:小尺寸,不可着色 LARGE_IMAGE:最大尺寸,不可着色 3.1.2 HeaderBuilder HeaderBuilder 主要为模板设置头...[在这里插入图片描述] 本小节涉及的完整代码Slice模版 例如,下面是一个包含头的简单列表 Slice,代码如下。...标题 副标题 起始项:SliceAction、图标或时间戳 结束项:SliceAction、图标或时间戳 主要操作 并且,RowBuilder还支持多种方式组合行内容,但须遵守以下限制。

    3.7K00

    Android 各版本特性

    Android 5.0特性 MaterialDesign设计风格 支持多种设备 支持64位ART虚拟机 5.0使用了recyclerview代替了listview,它具有高度解耦,可以自定义样式,提供...自适应图标 — Adaptive Icons Android O 支持创建自适应图标,系统可以基于设备选择的蒙版将这些图标显示不同形状。...系统还将实现与图标的自动交互,并在启动器、快捷方式、设置、共享对话框以及概览屏幕中使用它们。 在以前的 Android 版本图标大小定义 48 x 48 dp。...通道设置、广播以及免打扰 Android O引入了Notification Channels,可让您要显示的每种类型的通知创建一个用户可自定义的频道。...Android P通过以下更改简化了通知渠道设置: 阻止渠道:用户现在可以在应用的通知设置阻止整组渠道。您可以使用isBlocked()方法来确定某个组何时被阻止,不对被阻止的组发送消息。

    1.4K10

    Android通知Notification使用全解析,看这篇就够了

    用户可以点击通知打开您的应用或直接从通知执行操作。 2.1、展示 通知以不同的位置和格式向用户显示,例如状态栏图标、通知抽屉更详细的条目、应用程序图标上的徽章以及自动配对的可穿戴设备。...当发出通知时,它首先在状态栏显示一个图标。 2.2、操作 用户可以在状态栏上向下滑动以打开通知抽屉,他们可以在其中查看更多详细信息并根据通知执行操作。...4.2.2、重要性等级 紧急:发出声音并显示提醒通知 高:发出声音 :没有声音 低:无声音且不出现在状态栏 4.3、进度条通知 private fun createNotificationForProgress...更新分为两种情况: 更新进度:修改进度值即可 下载完成:总进度与当前进度都设置0即可,同时更新文案 注意:如果有多个进度通知,如何更新到指定的通知,是通过NotificationId匹配的。...8.0开始,支持设置通知时桌面的角是否显示 val mChannel = NotificationChannel(id, name, importance).apply { description

    5.2K30

    极光推送的角问题——让人又爱又恨的小红点

    ---- Android不是 Android 的基本功能,也就是说 Google 原生系统是不支持的,不过国内某些 ROM 提供了各自的方法来支持自定义实现,只是跟随系统更新,提供的方法可能还会有所改变...之在app图标添加角 分享 文/学海摆渡人(简书作者) 原文链接:http://www.jianshu.com/p/147c7085156c 著作权归作者所有,转载获得作者同意。...在做一些推送服务的时候,想在应用图标上添加未读消息,Android桌面角标的适配确实是非常坑爹的需求。原生系统根本就没有这个功能,国内很多厂家效仿ios都自己定义了该功能。...API ,使极光服务器A设备存储的角 P, B 设备存储的角 Q。...场景描述: 收到 P 条消息,角 P 点击了一条消息,此时你获取到消息的 badge 值 P,自行计算 -1,将 P-1 赋值给 setbadge 再推送消息 (badge +1),角 P,

    4.1K30

    Android开发笔记(二十)顶部导航栏ActionBar

    下面列一下几个注意点: 1、菜单项的布局定义,要把showAsAction属性设置好。...3、放入溢出菜单的菜单项,Android默认不在菜单文字左侧显示图标,就算在菜单布局文件设置android:icon也不管用。...所以要想在菜单列表显示左侧图标,需要调用MenuBuilder的setOptionalIconsVisible方法(MenuBuilder在Android内核,未开放出来,只能通过反射机制来调用)。...另外,更换左侧返回区域的返回箭头图标,可通过ActionBar的setIcon来实现。但该方法在Android4.4.2之后才支持,之前版本的系统仍然不支持定制左侧返回图标。...搜索框SearchView 搜索框有些复杂,实现步骤大致如下: 1、在菜单布局文件定义搜索项: <item android:id="@+id/menu_search"

    8.8K20

    Android开源库:手把手教你实现一个简单好用的搜索框(含历史搜索记录)

    前言 Android开发,类似下图的搜索功能非常常见 ? 今天,我将手把手教大家实现一款 封装了 历史搜索记录功能 & 样式 的Android定义搜索框 开源库,希望你们会喜欢。 ?...class EditText_Clear extends android.support.v7.widget.AppCompatEditText { /** * 步骤1:定义左侧搜索图标...top, Drawable right, Drawable bottom)介绍 // 作用:在EditText上、下、左、右设置图标(相当于android:drawableLeft="...(自动通过getIntrinsicWidth()& getIntrinsicHeight()获取) // 注2:若不想在某个地方显示,则设置null // 此处设置了左侧搜索图标...clearDrawable : null, null); } /** * 步骤4:对删除图标区域设置点击事件,即"点击 = 清空搜索框内容" * 原理:当手指抬起的位置在删除图标的区域

    2.8K10

    BottomNavigationView使用,配合ViewPager、修改图标大小、去掉文字等

    目录 1、布局 2、常用属性 3、设置监听 4、默认选中 5、配合ViewPager 6、添加角 7、修改图标大小 8、去除波纹效果 9、Github MaterialDesign的一个底部导航栏...android:title="@string/title_notifications"/> 图标可以直接在这里替换,对应icon 也可以是一个selector 3、设置监听 private...}; ViewPager选中的时候让BottomNavigationView的item也选中,BottomNavigationView的item选中的时候让ViewPager切换page 6、添加角...查看:BottomNavigationView添加角(BadgeView) 7、修改图标大小 源码开放方法: /** * Set the size to provide for the menu...app:itemBackground="@null" 我目前简单粗暴的方案,设置波纹颜色和背景颜色一致,达到看不出的效果。。

    1.4K60

    APK安装流程详解1——有关安装ing的实体类概述

    public int labelRes:获取该组件项在R文件String型的资源idint值,对应的是"android:label",如果不设置0。...:banner",不设置0 public int logo:获取该组件项在R文件drawable的资源id值,比应用图标要大,一般用在ToolBar上面,对应是"android: logo",不设置...public int logo:获取该组件项在R文件drawable的资源id值,比应用图标要大,一般用在ToolBar上面,对应是"android: logo",不设置0 public int...的属性"android:manageSpaceActivity"设置值,如果设定后,该按钮可点击跳转到该Activity,让用户选择性清除哪些数据,若不设置则为null。...通常null。 public String seinfo:来自Linux策略seiInfo标签,这个值一般在设置应用进程的SELinux安全上下文时有用。

    1.6K30
    领券