精华内容
下载资源
问答
  • I was developing discussion groups using web parts where I needed to show the discussion posting authors' profile images with the posting detail.First problem I faced was, how to get the profile image...

    I was developing discussion groups using web parts where I needed to show the discussion posting authors' profile images with the posting detail.

    First problem I faced was, how to get the profile image url of the user. I was able to find the details about the User Information List living in the RootSite of the site collection. I was able to get the related user info by getting the list item as below and get the "Picture" property value
    and properly formatting it.  

    userPictureUrl = SPContext.Current.Site.RootWeb.SiteUserInfoList.GetItemById(itemCreator.ID)["Picture"].ToString(); 
    SPFieldUrlValue userProfileImage = new SPFieldUrlValue(userPictureUrl);
    authorProfileImageUrl = (new Uri(userProfileImage.Url)).AbsolutePath;
     

    But, then I faced the next issue of viewing user's profile image as an anonymous user. To achieve that I had to go through the below process of granting anonymous users access to List and libraries in the mys site site collection and granting "View Items" access to user profile pictures library.

    STEP 1:
    Go to http://<<MysiteSitecollection web url>>/_layouts/settings.aspx
    Go to "Site Permissions" and click Anonymous Access from the ribbon
    Select "Lists and libraries" and click "OK".



    STEP 2:
    Go to View All Site Content -> User Photos -> Settings (Picture Library Settings)
    Go to "Permissions for this picture library"
    Click "Stop Inheriting Permissions"
    Click "Anonymous Access" from the ribbon
    Check off "View Items" and click "OK"


    After performing the above steps anonymous users were able to get access to profile pictures of other users.

    Senthil S

    转载于:https://www.cnblogs.com/kxlf/archive/2011/11/02/2232812.html

    展开全文
  • Android默认头像那些事儿

    千次阅读 2017-02-28 15:12:17
    对于用户头像展示,有很多优秀的图片加载框架,平常写项目会经常使用到这些图片加载框架,使用起来也很方便,效率也比较高.但是面对不同的需求时,处理的方式可能就有些不同.下面分析几种需求.文章使用Glide框架, 当然...

    Android应用市场中几乎所有APP中都会涉及用户体系.当然也就需要页面去处理用户信息的展示、用户头像的展示等.对于用户头像展示,有很多优秀的图片加载框架,平常写项目会经常使用到这些图片加载框架,使用起来也很方便,效率也比较高.但是面对不同的需求时,处理的方式可能就有些不同.下面分析几种需求.

    文章使用Glide框架, 当然其他的图片加载框架处理方式应该相似,就不多做介绍.简单介绍下Glide的集成配置

    首先配置一下Glide.在build.grade中添加对Gilde的引用及网络框架的引用

    compile 'com.github.bumptech.glide:glide:3.7.0'
    //OkHttp 3.x
    compile 'com.github.bumptech.glide:okhttp3-integration:1.4.0@aar'
    compile 'com.squareup.okhttp3:okhttp:3.2.0’

    然后配置一下权限

    <uses-permission android:name="android.permission.INTERNET"/>
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE”/>

    接着就可以使用Glide了.


    分析

    1) 第一种需求

    设置一个默认的头像图片显示,这种需求是最常见,也是最容易处理的.
    用Glide一句代码就可以实现,如下

    Glide.with(Activity).load("头像地址URL").placeholder(R.mipmap.xxxx).dontAnimate().into(ImageView);

    with中的参数可以是Activity,fragment,context.
    placeholder中的参数就是项目中默认图片的资源.
    dontAnimate方法是取消动画效果
    into中的参数当然就是需要展示图像的ImageView

    2) 第二种需求

    设置一个圆形(圆角)的默认头像图片显示,这种需求也比较常见,唯一的问题就是圆形(圆角)的图片展示.对于圆形图片展示,因为用到Glide所以这里想到最简便的解决方法就是找一个继承自ImageView的自定义控件.有很多,文章选用CircleImageView来进行演示,有兴趣的童鞋可以深入看一下实现.
    github地址https://github.com/hdodenhof/CircleImageView

    那面对这种需求,就可以这样写

    Glide.with(Activity).load("头像地址URL")
            .placeholder(R.mipmap.xxxx).dontAn imate().into(CircleImageView);

    into中参数为圆形自定义控件.

    3) 第三种需求

    设置一个带有随机背景颜色和文字的默认图片展示,这种需求往往出现在通讯录,好友等场景下,文字的目的是为了让用户更快的找到自己想找的目标(当然,我也是最近写项目,产品提的这种需求),随机背景颜色是为了更加美观(我认为的- -~).
    好了,面对这种需求,得先考虑一下怎么去做,如果去适应Glide,那就看一下placeholder方法,可以看到Glide提供了两种方法,如下

    /**
     * {@inheritDoc}
     */
    @Override
    public DrawableRequestBuilder<ModelType> placeholder(int resourceId) {
        super.placeholder(resourceId);
        return this;
    }
    
    /**
     * {@inheritDoc}
     */
    @Override
    public DrawableRequestBuilder<ModelType> placeholder(Drawable drawable) {
        super.placeholder(drawable);
        return this;
    }

    第一个方法是之前用到的,参数是一个默认的资源文件,第二个重载方法的参数是一个Drawable,显然文字是变化的,资源文件并不合适,只能在第二个重载方法上考虑一下.怎么做呢?其实很简单,可以通过安卓提供的方法创建一个带有文字和背景颜色的Drawable对象.贴一下完整代码,比较简单

    package com.angent.defaultavatardemo.utils;
    
    import android.graphics.Bitmap;
    import android.graphics.Canvas;
    import android.graphics.Color;
    import android.graphics.Paint;
    import android.graphics.drawable.BitmapDrawable;
    import android.graphics.drawable.Drawable;
    
    /**
     * Created by junweiliu on 17/1/18.
     */
    public class MakeRandomPhoto {
        /**
         * 默认字体大小
         */
        private final int DEFAULT_FONT_SIZE = 20;
        /**
         * 默认字体大小
         */
        private final int DEFAULT_FONT_COLOR = Color.WHITE;
        /**
         * 默认的图片宽
         */
        private final int DEFAULT_WIDTH = 60;
        /**
         * 默认的图片高
         */
        private final int DEFAULT_HEIGHT = 60;
        /**
         * 默认显示的文字数目
         */
        private final int DEFAULT_SHOW_NUM = 2;
        /**
         * 默认的图片颜色
         */
        private final int DEFAULT_COLOR = Color.BLUE;
        /**
         * 图片宽高
         */
        private int width = DEFAULT_WIDTH, height = DEFAULT_HEIGHT;
        /**
         * 图片颜色
         */
        private int color = DEFAULT_COLOR;
        /**
         * 文字大小
         */
        private int fontSize = DEFAULT_FONT_SIZE;
        /**
         * 文字颜色
         */
        private int fontColor = DEFAULT_FONT_COLOR;
        /**
         * 默认显示的文字数
         */
        private int showNum = DEFAULT_SHOW_NUM;
        /**
         * 画笔
         */
        private Paint mPaint;
        /**
         * 画笔属性
         */
        private Paint.FontMetrics fm;
        /**
         * 单例
         */
        public static MakeRandomPhoto instance;
    
    
        /**
         * 获取单例
         *
         * @return
         */
        public static MakeRandomPhoto getInstance() {
            if (instance == null) {
                synchronized (MakeRandomPhoto.class) {
                    if (instance == null) {
                        instance = new MakeRandomPhoto();
                    }
                }
            }
            return instance;
        }
    
        /**
         * 设置图片宽
         *
         * @return
         */
        public MakeRandomPhoto setWidth(int width) {
            if (0 == width) {
                this.width = DEFAULT_WIDTH;
            } else {
                this.width = width;
            }
            return instance;
        }
    
        /**
         * 设置图片背景颜色
         *
         * @return
         */
        public MakeRandomPhoto setBackGroudColor(int color) {
            if (0 == color) {
                this.color = DEFAULT_COLOR;
            } else {
                this.color = color;
            }
            return this;
        }
    
        /**
         * 设置图片高
         *
         * @return
         */
        public MakeRandomPhoto setHeight(int height) {
            if (0 == height) {
                this.height = DEFAULT_HEIGHT;
            } else {
                this.height = height;
            }
            return this;
        }
    
        /**
         * 设置文字颜色
         *
         * @return
         */
        public MakeRandomPhoto setTxtColor(int fontcolor) {
            if (0 == fontcolor) {
                this.fontColor = DEFAULT_FONT_COLOR;
            } else {
                this.fontColor = fontcolor;
            }
            return this;
        }
    
        /**
         * 设置文字大小
         *
         * @return
         */
        public MakeRandomPhoto setTxtSize(int fontsize) {
            if (0 == fontsize) {
                this.fontSize = DEFAULT_FONT_SIZE;
            } else {
                this.fontSize = fontsize;
            }
            return this;
        }
    
        /**
         * 设置显示文字个数
         *
         * @return
         */
        public MakeRandomPhoto setShowNum(int showNum) {
            if (0 == showNum) {
                this.showNum = DEFAULT_SHOW_NUM;
            } else {
                this.showNum = showNum;
            }
            return this;
        }
    
        /**
         * 创建随机图片
         *
         * @return
         */
        public Bitmap makeRandomPhotoBp(String txt) {
            if (null == txt || "".equals(txt)) {
                txt = "    ";
            }
            // 处理展示的文字
            if (txt.length() > showNum) {
                txt = txt.substring(txt.length() - showNum);
            }
            // 这里使用RGB_565,系统开销小一点
            Bitmap bp = Bitmap.createBitmap(width, height, Bitmap.Config.RGB_565);
            Canvas c = new Canvas(bp);
            mPaint = new Paint();
            mPaint.setColor(fontColor);
            mPaint.setTextSize(fontSize);
            mPaint.setTextAlign(Paint.Align.CENTER);
            mPaint.setAntiAlias(true);
            fm = mPaint.getFontMetrics();
            // 设置背景颜色
            c.drawColor(ColorUtils.getRandomColor(txt.hashCode()));
            // 居中显示
            c.drawText(txt, width / 2, height / 2 - fm.descent + (fm.descent - fm.ascent) / 2, mPaint);
            c.save(Canvas.ALL_SAVE_FLAG);//保存
            c.restore();//
            return bp;
        }
    
    
        /**
         * 创建随机图片(Drawable)
         *
         * @return
         */
        public Drawable makeRandomPhotoDrawable(String txt) {
            Drawable db = new BitmapDrawable(makeRandomPhotoBp(txt));
            return db;
        }
    
        /**
         * 创建群组图像
         *
         * @param leftTopBp
         * @param rightTopBp
         * @param leftBottomBp
         * @param rightBottomBp
         * @return
         */
        public Bitmap makeGroupPhotoBp(Bitmap leftTopBp, Bitmap rightTopBp, Bitmap leftBottomBp, Bitmap rightBottomBp) {
            Bitmap bp = Bitmap.createBitmap(width * 2, height * 2, Bitmap.Config.RGB_565);
            Canvas c = new Canvas(bp);
            Paint mPaint = new Paint();
            // 绘制左上角
            c.drawBitmap(leftTopBp, 0, 0, mPaint);
            // 绘制右上角
            c.drawBitmap(rightTopBp, width, 0, mPaint);
            // 绘制左下角
            c.drawBitmap(leftBottomBp, 0, height, mPaint);
            // 绘制右下角
            c.drawBitmap(rightBottomBp, width, height, mPaint);
            c.save(Canvas.ALL_SAVE_FLAG);//保存
            c.restore();
            return bp;
        }
    
        /**
         * 创建群组图片(Drawable)
         *
         * @return
         */
        public Drawable makeGroupPhotoDrawable(Bitmap leftTopBp, Bitmap rightTopBp, Bitmap leftBottomBp, Bitmap rightBottomBp) {
            Drawable db = new BitmapDrawable(makeGroupPhotoBp(leftTopBp, rightTopBp, leftBottomBp, rightBottomBp));
            return db;
        }
    }

    使用方法,例如在适配器中

        @Override
        public View getView(final int position, View convertView, ViewGroup parent) {
            viewHolder = null;
            UserBean bean = mDatas.get(position);
            if (convertView == null) {
                convertView = mInflater.from(mContext).inflate(R.layout.item_user, null);
                viewHolder = new ViewHolder();
                viewHolder.userNameTv = (TextView) convertView.findViewById(R.id.tv_user_name);
                viewHolder.userPhotoIv = (ImageView) convertView.findViewById(R.id.ci_user_photo);
                viewHolder.userPhotoTv = (TextView) convertView.findViewById(R.id.tv_user_photo);
                convertView.setTag(viewHolder);
            } else {
                viewHolder = (ViewHolder) convertView.getTag();
            }
            viewHolder.userNameTv.setText(bean.getUserName());
            // Glide加载
            Glide.with(mContext).load(bean.getUserPhoto())
                    .placeholder(MakeRandomPhoto.getInstance().setWidth(48).setHeight(48).setTxtSize(20).setTxtColor(Color.parseColor("#ffffff")).setShowNum(2).makeRandomPhotoDrawable(bean.getUserName())).dontAnimate().into(viewHolder.userPhotoIv);
            return convertView;
        }

    封装了一个制作默认头像的工具类,提供方法设置相关属性,每个设置方法都会返回对象本身是为了方便连缀使用,看一下核心方法

    /**
     * 创建随机图片
     *
     * @return
     */
    public Bitmap makeRandomPhotoBp(String txt) {
        if (null == txt || "".equals(txt)) {
            txt = "    ";
        }
        if (txt.length() > showNum) {
            txt = txt.substring(txt.length() - showNum);
        }
        // 这里使用RGB_565,系统开销小一点
        Bitmap bp = Bitmap.createBitmap(width, height, Bitmap.Config.RGB_565);
        Canvas c = new Canvas(bp);
        mPaint = new Paint();
        mPaint.setColor(fontColor);
        mPaint.setTextSize(fontSize);
        mPaint.setTextAlign(Paint.Align.CENTER);
        mPaint.setAntiAlias(true);
        fm = mPaint.getFontMetrics();
        // 设置背景颜色
        c.drawColor(ColorUtils.getRandomColor(txt.hashCode()));
        // 居中显示
        c.drawText(txt, width / 2, height / 2 - fm.descent + (fm.descent - fm.ascent) / 2, mPaint);
        c.save(Canvas.ALL_SAVE_FLAG);//保存
        c.restore();//
        return bp;
    }
    

    首先对传入的文字进行处理,截取出需要显示的文字,默认显示字符串的最后两个字符,当然也可以自己设置.然后创建了一个Bitmap,这里使用RGB_565而不是ARGB_8888,是因为RGB_565的开销要小于ARGB_8888,一个背景色对画质的要求不是很高.最后就是创建画布,在画布中去完成背景色和文字的绘制.有一个ColorUtils,这个是封装的一个随机颜色工具,一起看一下.

    package com.angent.defaultavatardemo.utils;
    
    import android.graphics.Color;
    import android.support.annotation.IntRange;
    
    import com.angent.defaultavatardemo.R;
    
    /**
     * Created by junweiliu on 17/1/18.
     */
    public class ColorUtils {
        /**
         * 随机颜色起始
         */
        private static final int RANDOM_COLOR_START_RANGE = 0;
        /**
         * 随机颜色终止
         */
        private static final int RANDOM_COLOR_END_RANGE = 7;
    
    
        /**
         * 获取随机color名称
         *
         * @param colorPosition 唯一值,这里用string的hashcode
         * @return
         */
        public static String getRandomColorName(@IntRange(from = RANDOM_COLOR_START_RANGE, to = RANDOM_COLOR_END_RANGE)
                                                int colorPosition) {
            colorPosition = Math.abs(colorPosition) % RANDOM_COLOR_END_RANGE;
            return String.format("random_color_%d", colorPosition + 1);
        }
    
        /**
         * 获取随机color颜色
         *
         * @param colorPosition 唯一值,这里用string的hashcode
         * @return
         */
        public static int getRandomColor(@IntRange(from = RANDOM_COLOR_START_RANGE, to = RANDOM_COLOR_END_RANGE)
                                         int colorPosition) {
            String colorNmae = getRandomColorName(colorPosition);
            int resId = Color.parseColor("#8a8a8a");
            if (colorNmae.contains("1")) {
                resId = Color.parseColor("#8a8a8a");
            } else if (colorNmae.contains("2")) {
                resId = Color.parseColor("#f7b54e");
            } else if (colorNmae.contains("3")) {
                resId = Color.parseColor("#17c295");
            } else if (colorNmae.contains("4")) {
                resId = Color.parseColor("#4da9eb");
            } else if (colorNmae.contains("5")) {
                resId = Color.parseColor("#b38979");
            } else if (colorNmae.contains("6")) {
                resId = Color.parseColor("#568aad");
            } else if (colorNmae.contains("7")) {
                resId = Color.parseColor("#f2725e");
            } else {
                resId = Color.parseColor("#8a8a8a");
            }
            return resId;
        }
    
        /**
         * 获取color资源
         *
         * @param colorPosition 唯一值,这里用string的hashcode
         * @return
         */
        public static int getCircleColorBgId(@IntRange(from = RANDOM_COLOR_START_RANGE, to = RANDOM_COLOR_END_RANGE)
                                             int colorPosition) {
            String colorNmae = getRandomColorName(colorPosition);
            int resId = R.mipmap.random_color_one;
            if (colorNmae.contains("1")) {
                resId = R.mipmap.random_color_one;
            } else if (colorNmae.contains("2")) {
                resId = R.mipmap.random_color_two;
            } else if (colorNmae.contains("3")) {
                resId = R.mipmap.random_color_three;
            } else if (colorNmae.contains("4")) {
                resId = R.mipmap.random_color_four;
            } else if (colorNmae.contains("5")) {
                resId = R.mipmap.random_color_five;
            } else if (colorNmae.contains("6")) {
                resId = R.mipmap.random_color_six;
            } else if (colorNmae.contains("7")) {
                resId = R.mipmap.random_color_seven;
            } else {
                resId = R.mipmap.random_color_one;
            }
            return resId;
        }
    }

    ColorUtils的主要作用就是通过字符串的hashcode值,来生成一个随机的颜色值,当然相同字符串的hashcode值是相同的,这样就保证了每个文字对应一个相同的随机颜色.
    ColorUtils中还提供了一个获取随机背景图片的方法,这个方法是干嘛用的呢?
    这个就是为了第二种方案写的,如果不依赖Glide,不使用placeholder方法.怎么实现这种随机背景颜色上带有文字的默认头像呢,看一下布局文件,可能就懂了.

    <?xml version="1.0" encoding="utf-8"?>
    <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
                    android:layout_width="match_parent"
                    android:layout_height="match_parent"
                    android:orientation="horizontal">
        <TextView
                android:id="@+id/tv_user_photo"
                android:layout_width="48dp"
                android:layout_height="48dp"
                android:layout_centerVertical="true"
                android:layout_marginBottom="10dp"
                android:layout_marginLeft="16dp"
                android:layout_marginRight="16dp"
                android:layout_marginTop="10dp"
                android:gravity="center"
                android:textColor="#ffffff"
                android:textSize="20sp"
                android:visibility="visible"
        />
    
        <com.angent.defaultavatardemo.widget.CircleImageView
                android:id="@+id/ci_user_photo"
                android:layout_width="48dp"
                android:layout_height="48dp"
                android:layout_centerVertical="true"
                android:layout_marginBottom="10dp"
                android:layout_marginLeft="16dp"
                android:layout_marginRight="16dp"
                android:layout_marginTop="10dp"
                android:visibility="visible"/>
    
    
        <TextView
                android:id="@+id/tv_user_name"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_centerVertical="true"
                android:layout_toRightOf="@+id/ci_user_photo"
                android:text="名字"
                android:textColor="#333333"
                android:textSize="16sp"/>
    
    </RelativeLayout>

    在CircleImageView下边有一个TextView,位置刚好和CircleImageView重合,并且在下层.再看一下代码中的写法

        @Override
        public View getView(final int position, View convertView, ViewGroup parent) {
            ...
            viewHolder.userNameTv.setText(bean.getUserName());
            // 设置随机颜色背景
            viewHolder.userPhotoTv.setBackgroundResource(ColorUtils.getCircleColorBgId(bean.getUserName().hashCode()));
            // 设置文字
            viewHolder.userPhotoTv.setText(bean.getUserName().substring(bean.getUserName().length() - 2));
            // 加载图像
            Glide.with(mContext).load(bean.getUserPhoto()).dontAnimate().into(viewHolder.userPhotoIv);
            return convertView;
        }

    应该很简单,这种方案的思路就是,如果Glide加载图片成功了,就把地下的TextView遮住,如果没有加载成功,那么下层的TextView就作为默认头像显示.

    应该还有其他更好的方案,这里就提供这两种.测试了一下两种方案的性能,基本没有差别.推荐第二种方案,显示时比较清晰

    最后看一下效果图吧

    这里写图片描述


    源码地址

    源码下载

    展开全文
  • 我的头像大全

    2021-02-02 14:53:44
    头像美图壁纸大全 应用隐私政策 尊敬的用户: 头像美图壁纸大全 应用是由 北京微言科技有限公司 (以下简称 “ 微言 ” )为您提供的一款 手机头像、桌面壁纸软件 。 “微言” 十分尊重您的个人信息和数据,并会尽...

    在这里插入图片描述
    我的头像大全 应用隐私政策

    尊敬的用户:
    我的头像大全 应用是由 北京微言科技有限公司 (以下简称 “ 微言 ” )为您提供的一款 手机头像、桌面壁纸软件 。

    “微言” 十分尊重您的个人信息和数据,并会尽全力保护您的个人信息和数据的安全可靠。
    请在使用 头像美图壁纸大全 应用前,务必仔细阅读并了解和同意《 我的头像大全 应用的隐私政策》。
    该政策规定了您在使用 机壁纸软件极速版 应用时我们将如何收集、使用、披露、处理和保护您提供给我们的信息。
    如果我们需要您提供某些信息用于在使用该产品时验证您的身份、以及向我们的第三方服务
    供应商连接服务时,我们会严格遵守该隐私政策来使用这些信息。如果您已经开始使用 头像美图壁纸大全 应用,就表示您已经阅读、许可并接受该隐私政策中所描述的所有条款,以及我们今后随时 做出的任何变更。
    一、 我们如何收集您的个人信息
    二、我们如何使用 Cookie 和同类技术
    三、我们如何使用您的个人信息
    四、我们如何保护您的个人信息
    五、未成年人信息保护
    六、隐私政策的更新
    七、第三方 SDK 信息公示
    一、 我们如何收集您的个人信息
    个人信息是指以电子或者其他方式记录的能够单独或者与其他信息结合识别特定自然人身份或者反应特定自然人活动情况的各种信息。个人信息包括:
    个人基本资料(个人姓名、性别、民族、国籍、住址、出生日期、身份证号码、电话号码、电子邮箱等);个人身份信息(身份证、社保卡、居住证等)、个人生物识别信息(指纹、声纹、掌纹、面部特征等);网络身份标识信息(系统账号、 IP 地址、邮箱地址及其与前述有关的密码、口令、口令保护答案、用户个人数字证书等);
    个人财产信息(银行账号及密码、征信信息、交易和消费记录、流水记录等,以及虚拟货币、虚拟交易、游戏类兑换码等虚拟财产信息);
    个人通信信息(通信通讯联系方式、通信记录和内容、电子邮件、短彩信等)、联系人信息(通讯录、好友列表、群列表、电子邮件地址列表等);
    个人上网记录(指通过日志存储的用户操作记录,包括网站浏览记录、软件使用记录等)、个人常用设备信息(包括硬件序列号、设备 MAC 地址、软件列表、唯一设备识别码 [ 如 IMEI/android ID/IDFA/OPENUDID/GUID\SIM 卡 IMSI 信息等 ] );
    个人位置信息(如行踪轨迹、精准定位信息等);
    其他信息。
    个人敏感信息是指一旦泄露、非法提供或滥用可能危害人身和财产安全,极易导致个人名誉、身心健康受到损害或歧视性待遇等的个人信息,个人敏感信息包括:身份证及身份证号码、手机号码、银行账号及密码、系统账号及密码、邮箱地址及密码、消费记录、地理位置信息等。
    在您使用手机铃声服务的过程中,我们会按照如下方式收集您在使用服务时主动提供的或因为使用服务而产生的信息,用以向您提供、优化我们的服务以及保障您的账户安全:
    1.3 搜索功能
    1.3.1 当您使用搜索功能时,我们需要收集您使用的搜索词、用户 ID 信息。我们收集这些信息是为了向您提供您所需要的内容和可能更感兴趣的服务,同时亦可以改进我们向您提供的服务。
    1.6 广告功能
    1.6.1 当您使用广告功能时,我们需要收集您的设备标识、浏览内容、浏览广告的次数以及与它们互动的次数信息。我们收集这些信息是为了向您推荐更优质、您可能更感兴趣的广告内容。
    1.6.2 个性化广告是广告展示技术之一,它依据用户行为或兴趣数据提供更相关的广告内容。我们仅提供对接技术,不会获取您在其他应用内的行为或个性数据。是为了帮助您顺利完成交易、保障您的交易安全、查询订单信息、售后服务。
    1.9 意见反馈功能
    1.9.1 联系方式(电话、 QQ 、邮箱)、反馈意见、用户 ID 、设备型号、屏幕分辨率、操作系统信息。
    1.12 缓存下载功能
    1.12.1 当您需要进行图片、视频等下载的,我们需要写入并读取您的存储卡权限,以保证您成功下载需要的图片、视频等。如您拒绝,会使您无法实现上述功能。
    1.12.2 当您查看大图页面进行图片下载或在配音短视频播放页进行视频下载时,我们需要修改或者删除您的存储卡中的内容。如您拒绝,会使您无法实现上述功能。
    1.14 个性化推荐功能
    1.14.1 我们会获取您的地理位置信息,用于个性化推荐,以便于向您更精准的进行内容推荐,提供更优质的服务。
    1.15 经您同意后收集的其他信息。
    二、我们如何使用 Cookie 和同类技术
    2.1 为确保网站正常运转,我们会在您的计算机或移动设备上存储名为 Cookie 的小数据文件。 Cookie 通常包含标识符、站点名称以及一些号码和字符。 Cookie 主要的功能是便于您使用网站产品和服务,以及帮助网站统计独立访客数量等。运用 Cookie 技术,我们能够为您提供更加周到的个性化服务,并允许您设定您特定的服务选项。
    2.2 在您使用我们的服务时,我们可能会使用 Cookie 或同类技术收集您的一些个人信息,例如:您访问网站的习惯、您的登录信息等, Cookie 和同类技术收集该类信息是为了您使用我们的服务的必要、简化您重复操作的步骤(如注册、登录)、便于您查看使用历史(如浏览历史)、向您提供更切合您个人需要的服务内容和您可能更感兴趣的内容、保护您的信息和账号安全性、改善我们的产品和服务等。我们承诺仅在本隐私政策所述目的范围内使用 Cookie 和同类技术。
    2.3 如果您的浏览器允许,您可以通过您的浏览器的设置以管理、(部分 / 全部)拒绝 Cookie 或同类技术;或删除已经储存在您的计算机、移动设备或其他装置内的 Cookie 或同类技术文件,从而实现我们无法全部或部分追踪您的个人信息。您如需详细了解如何更改浏览器设置,请具体查看您使用的浏览器的相关设置页面。
    三、我们如何使用您的个人信息
    3.1 共享
    您的个人信息是我们为您提供服务的重要依据和组成部分,对于您的个人信息,我们仅在本文所述的目的和范围内或根据法律法规的要求收集和使用,并严格保密,我们不会向第三方共享您的个人信息,除非存在以下一项或多项情形:
    3.1.1 事先征得您的明确授权同意;
    3.1.2 您主动提出的要求;
    3.1.3 根据法律法规规定、诉讼争议解决需要,或者行政、司法机关依照法律法规提出的要求;
    3.1.4 将您的个人信息与手机铃声的关联方共享。但手机铃声只会共享必要的个人信息,且受本文的约束。手机铃声的关联方如要改变个人信息的处理目的,将再次征求您的授权同意。
    3.1.5 为了保护您、手机铃声、其他用户的权利及财产安全或社会公共利益使其免遭损害而与第三方的共享;
    3.1.6 与部分业务合作伙伴的必要共享:您理解并知悉,为了必要且合理的业务的顺利展开,履行我们在相关用户协议或本隐私政策中的义务,我们可能会向合作伙伴等第三方共享您的信息(详情见第九条关于 “ 第三方 SDK 信息公示 ” 内容)。但我们仅会出于合法、正当、必要、特定、明确的目的共享您的个人信息,并且只会共享提供服务所必要的个人信息。我们的合作伙伴无权将共享的个人信息用于任何其他用途。对我们与之共享个人信息的公司、组织和个人,我们会要求其遵守保密约定,要求他们按照手机铃声的说明、本文以及其他任何相关的保密和安全措施来处理个人信息。
    3.1.7 其他法律法规等规定,司法机关或行政机关要求的情形。
    3.2 转让
    我们不会将您的个人信息转让给任何公司、组织和个人,但以下情况除外:
    3.2.1 事先获得您的明确授权或同意;
    3.2.2 为满足法律法规、程序的要求或强制性的政府要求或司法裁定;
    3.2.3 如果我们或我们的关联公司涉及合并、分立、清算、资产或业务的收购或出售等交易,您的个人信息有可能作为此类交易的一部分而被转移,我们将确保该等信息在转移过程中的保密性,并尽最大可能确保新的持有您个人信息的公司、组织继续受此隐私政策的约束,否则我们将要求该公司、组织重新向您征求您的授权同意。
    3.3 公开披露
    我们仅会在以下情况下,公开披露您的个人信息:
    3.3.1 获得您的明确同意;
    3.3.2 基于法律法规、程序、诉讼或政府主管部门强制性要求下。
    3.4 例外
    在以下情形中,共享、转让、公开披露您的个人信息无需事先征得您的授权同意:
    3.4.1 与国家安全、国防安全直接相关的;
    3.4.2 与公共安全、公共卫生、重大公共利益直接相关的;
    3.4.3 与犯罪侦查、起诉、审判和判决执行等直接相关的;
    3.4.4 出于维护您或其他个人的生命、财产等重大合法权益但又很难得到本人同意的;
    3.4.5 您自行向社会公众公开的个人信息;
    3.4.6 从合法公开披露的信息中收集的个人信息,如合法的新闻报道、政府信息公开等渠道;
    3.4.7 根据与您签订和履行的相关协议或其他书面文件所必需的;
    3.4.8 对收集的个人信息已经进行匿名化或去标识化处理的;
    3.4.9 为合法的新闻报道所必需的;
    3.4.10 做学术研究用途,例如为科研机构开展统计或学术研究之必要
    3.4.11 其他法律法规等规定的情形。
    四、我们如何保护您的个人信息
    4.1 为保障您的个人信息安全,我们努力采取各种合理的物理、电子和管理方面的安全措施来保护您的个人信息,使您的信息不会被泄漏、毁损或者丢失,包括但不限于 SSL 、信息加密存储、数据中心的访问控制等。
    4.2 我们将按照《网络安全法》等法律法规的要求保存您的个人信息。您的个人信息均储存于中华人民共和国境内(注:其中微信分享 SDK 绑定 IP 归属地为香港),如我们需要向境外传输您的个人信息,我们会严格按照法律法规的规定及要求执行,并保证您的个人信息安全。
    4.3 我们将保存您的个人信息不少于六个月,最长不超过 20 年。时间到期后,我们会将您的个人信息匿名化处理,以保证您的个人信息安全。
    4.4 我们仅允许有必要知晓您的个人信息的员工知晓您的个人信息,并为此设置了严格的访问权限控制和监控机制。我们对可能接触到您的个人信息的员工或外包人员也采取了严格管理,包括但不限于根据岗位的不同采取不同的权限控制,与他们签署保密协议,监控他们的操作情况等措施。我们建立了完善的信息安全管理制度和内部安全事件处置机制,我们会定期对负责人员及员工进行信息安全管理培训。我们会采取适当的符合业界标准的安全措施和技术手段存储和保护您的个人信息,以防止您的信息丢失、遭到被未经授权的访问、公开披露、使用、修改、毁损、丢失或泄漏。
    4.5 我们会按现有技术提供相应的安全措施来保护您的信息,提供合理的安全保障,我们将尽力做到使您的个人信息不被泄漏、毁损或丢失。如不幸发生个人信息安全事件的,我们将按照法律法规的要求,及时向您告知安全事件的基本情况和可能产生的影响、我们已采取或将要采取的处置措施、您可自主防范和降低风险的建议、对您的补救措施等。我们会及时将事件相关情况以邮件、信函、电话、推送通知等方式告知您,难以逐一告知个人信息主体时,我们会采取合理、有效的方式发布公告。同时,我们还将按照监管部门要求,主动上报个人信息安全事件的处置情况。
    4.6 请您知悉并理解,互联网并非绝对安全的环境,我们强烈建议您通过安全方式、使用复杂密码等手段协助我们保证您的账号安全。如您发现自己的个人信息泄密,尤其是您的账号或密码发生泄露,请您立即根据本文中提供的联系方式联系我们,以便我们及时采取相应措施来保护您的个人信息安全。
    五、未成年人信息保护
    6.1 手机铃声提示父母或监护人指导未满十八周岁的未成年人使用手机铃声所提供的服务。如您为未成年人,手机铃声建议您请您的父母或监护人仔细阅读本文,并建议您在提交个人信息之前寻求父母或监护人的同意和指导。
    6.2 我们将根据国家相关法律法规保护未成年人的个人信息。如果任何时候监护人有理由相信我们在未获得监护人同意的情况下收集了未成年人的个人信息,请联系我们,我们会采取措施尽快删除相关信息。
    六、隐私政策的更新
    7.1 我们鼓励您在每次使用我们的服务时都查阅我们的隐私政策。
    7.2 您理解并同意,为了更好的向您提供服务,我们需要适时根据手机铃声平台产品及服务的发展情况,对本隐私政策进行修订及更新。我们会在手机铃声平台显著位置发布更新后的隐私政策,如您不同意更新后的隐私政策内容,您应不使用或立即停止使用手机铃声平台服务。
    八、第三方 SDK 信息公示
    以下为我们接入的第三方 SDK 名称、信息获取、使用目的及其隐私协议地址说明,
    1 、友盟移动统计 SDK
    信息获取: Mac 地址、唯一设备识别码( IMEI/android ID/IDFA/OPENUDID/GUID 、 SIM 卡 IMSI 信息)、地理位置信息
    使用目的:数据统计
    隐私协议地址: https://www.umeng.com/policy
    2 、友盟统计分析组件 SDK
    信息获取: Mac 地址、唯一设备识别码( IMEI/android ID/IDFA/OPENUDID/GUID 、 SIM 卡 IMSI 信息)、地理位置信息
    使用目的:数据统计
    隐私协议地址: https://www.umeng.com/policy
    隐私协议地址: https://privacy.qq.com/
    3 、友盟埋点 SDK
    信息获取: Mac 地址、唯一设备识别码( IMEI/android ID/IDFA/OPENUDID/GUID 、 SIM 卡 IMSI 信息)、地理位置信息
    使用目的:用户使用效果统计分析
    隐私协议地址: https://www.umeng.com/policy
    4 、穿山甲广告 SDK
    信息获取:
    设备品牌、型号、软件系统相关信息
    安卓 (oaid 、无线网 SSID 名称、 WiFi 路由器 MAC 地址、设备 MAC 地址、 IMEI 、地理位置 )
    iOS (手机系统重启时间、磁盘总空间、系统总内存空间 )
    广告的展示、点击等数据
    使用目的:
    使用目的:广告请求和视图渲染
    隐私协议地址: http://partner.toutiao.com/privacy
    更新时间: 2020 年 10 月 18 日

    展开全文
  • PHP - 点击更换头像

    2015-11-12 16:58:00
    首先点击头像图片,弹出选择窗口,选中其中一个则窗口推出头像更换。 效果: 主页面代码: <tr> <td>头像:</td> <td><input type="hidden" name="face" value=""/&...

    原理:

    操作流程:

    首先点击头像图片,弹出选择窗口,选中其中一个则窗口推出头像更换。

     

    效果:

     

    主页面代码:

    <tr>
        <td>头像:</td>
        
        <td><input type="hidden" name="face" value=""/>
        <img src="./face/m01.gif" alt="头像" class="face" id='faceimg' οnclick="javascript:window.open('face.php','face','width=420,height=600,top=0,left=0,scrollbars=1');"/></td>
    </tr>

     

    子页面代码(弹出窗体页面):

    http://www.cnblogs.com/KTblog/p/4958731.html

        <!-- 使用遍历文件夹函数,获取头像 -->
        <?php $facearray = _myreaddir(dirname(__FILE__)."/face"); ?>

     

        <div id="face">
            <h3>请选择头像:</h3>
            
                <?php foreach ($facearray as $num){
                        echo "<img src='face/".$num."' alt='face/".$num."' title='".$num."'/>";
                }?>
    
        </div>

     

    使用的JS代码:
    引用:

        <!-- 点击更换头像 -->
        <script type="text/javascript" src="./js/face.js"></script>    

    代码:

    window.onload =  function() {
        //获取face.php页面中的头像对象
        var img = document.getElementsByTagName('img');
        //进行循环
        for(i=0;i<img.length;i++){
            //对选择的对象触发点击事件
            img[i].onclick = function (){
                //调用 _opener()函数
                _opener(this.alt);
            };
        }
    }
    
    //显示头像函数
    function _opener(src){
        //获取父页面头像对象
        var faceimg = opener.document.getElementById('faceimg');
        //将头像的img更换
        faceimg.src = src;
        //将父页面中的register表单中的name为face的值更改为src。
        opener.document.register.face.value = src;
    }

     

    转载于:https://www.cnblogs.com/KTblog/p/4959561.html

    展开全文
  • 角色头像/匿名头像 相信很多人都尝试玩过QQ的匿名聊天功能,然后就被管理员禁止了,它更像是一种娱乐性玩法。其实还有类似的做法,在游戏中较为常见,在角色确定前显示的是用户头像,角色确定后就显示角色头像。...
  • 超清壁纸头像软件

    2020-12-09 19:15:07
    超清壁纸头像软件 应用隐私政策 尊敬的用户: 超清壁纸头像软件 应用是由 北京微言科技有限公司 (以下简称 “ 微言科技 ” )为您提供的一款 手机桌面壁纸美化软件 。 “微言科技” 十分尊重您的个人信息和数据,并...
  • 匿名聊天 在线实时匹配,两人异性聊天室。为移动端设计。 案例地址: 后台管理地址: 登录账号:admin 登录密码:admin 特性 免注册 随机房间时间 随机情侣头像 随机聊天话题 支持发送自定义图片 支持通过输入法键盘...
  • 上传头像,js实现

    千次阅读 2017-05-06 12:08:30
    html:    我的资料              我的资料            更换头像  更换主题背景  手
  • Gilde加载圆形图片

    2016-11-15 20:38:33
    实际开发中,很多项目中需要用到圆形图片,例如,项目中个人资料的用户头像。加载图片的框架有很多,我们就简单的说几个,及其他们的优缺点。 首先是Fresco,它的优点是其他几个框架没有的,或者说是其他几个框架的...
  • 如果无秘能够提供违法信息发布者的相关资料,被侵权人完全可以向违法信息发布者直接追责,可以说,无秘所创造的匿名环境,实际上为这些违法信息,提供了“避风港” 一盆盆“脏水”,再次从匿名社交软件——无秘上,...
  • 说到了几点比较实用的地方: 1、如何配置匿名访问 2、如何关闭个人站点功能 3、moss用户信息表位置是一个隐藏属性的SiteUserInfoList列表 我们都知道MOSS 2010里面的“我的网站”里面有一个上传...
  • 保存并查看个人资料图片 通过机器人向用户发送大量手势消息 通过机器人将消息发送给特定的人 新增管理员 将不受管理的技术问题发送给管理员 所需工具: 表格: tbl_users 数据类型 ID 比金特 全名 nvarchar...
  • 匿名对象 没有变量名的对象 特点 匿名对象如果不给变量赋值 只能使用一次 匿名对象可以作为方法的参数和返回值 常见的使用:为ArrayList类添加对象 ArrayList<Person> list = new ArrayList<Person>()...
  • Scrapy爬取知乎Python专题精华,主要有两个知识点, 1、Scrapy自带的图片管道爬取图片; 2、Scrapy多个item分别使用不同的pipeline进行处理。
  • Vue写项目后台04 收缩菜单栏,全屏,头像,退出登录 继上次的左边菜单栏这次加了头部,左边菜单栏收缩,和页面全屏,头像,退出登录。 首先看左边的菜单栏 在 中自带有:collapse属性,给他设置一个collapse的值 ...
  • 公有读权限可以通过匿名身份直接读取您存储桶中的数据,存在一定的安全风险,为确保您的数据安全,不推荐此配置,建议您选择私有。 建议您使用防盗链功能,可有效防止流量盗刷现象。 但是这个也有风险,别人可以不...
  • Fresco 是Facebook开源的安卓上的图片加载框架,也可以说是至今为止安卓上最强大的图片加载框架. 相对于其他几个图片加载框架,Fresco主要的优点在于更好的内存管理和更强大的功能,更便捷的使用,缺点则是体积比较大,...
  • Fresco图片框架详解

    2017-11-15 08:10:25
    Fresco是facebook最新推出的一款android应用中展示图片的强大图片库, 可以从网络,本地存储和本地资源中加载图片,相对于ImageLoader,拥有更快的 图片下载速度以及可以加载和显示gif图等诸多优势,是个很好的...
  • 近期,以 CryptoPunks 为代表的头像类 NFT 项目尤其火爆,平均成交价格甚至达到数十万美元。Coingecko 分析师 Benjamin Hor 撰文对近期该热潮中的Crypt...
  • 工作日志记录:脉脉这款应用中默认用户头像设计的很有新意,当用户第一次注册时它会根据用户的昵称的第一个字作为头像中的主要文字,思考了一下我用自己的方式将他实现出来,可能以后会借鉴这种设计方式。
  • image.png if(strpos($info['avatar'],'132132')){ $upgrade2=array(); $upgrade2['avatar'] = str_replace('132132', '132',...
  • 图片加载框架,Glide

    2017-03-05 22:47:24
    在Android设备上,加载网络图片一直是一个头疼的问题,因为Android设备种类繁多(当然最主要的是配置),处理的稍不周到轻则应用卡顿,严重者就会出现OOM的,导致程序挂掉。现如今网络上有很多图片库,如 ...
  • 马桶 MT是一款用图片加语音或者文字来呈现的匿名社交话题工具,在这里你可以创建任何你认为有趣的话题,可以随心的讨论和吐槽。 马桶 MT里,你可以享用马桶圈:你可以匿名发布生活趣事在马桶圈,若对马桶其他用户...
  • android 图片优化

    2018-06-28 10:22:41
     对于5.0以下系统,fresco使用”ashmem”(匿名共享内存)区域存储Bitmap缓存,这样Bitmap对象的创建、释放将不会触发GC,不会占用javaheap. 这个特点是其他图片加载框架所没有做到的.  5.0以上系统,由于安卓系统...
  • Fresco是Facebook最新推出的一款用于Android应用中展示图片的强大图片库,可以从网络、本地存储和本地资源中加载图片。相对于ImageLoader,拥有更快的图片下载速度以及可以加载和显示gif图等诸多优势,是个很好的...
  • 给每一个发表评论者分配一张独特的头像,允许这种特殊形式的交流,但是也不能直接@其他发表评论者。你可能在不同的秘密的评论区中和某个相同的人在聊天,但你永远无法知晓。  获胜者:   Secret 。 采用一种...
  • 原文发表在:http://blog.buer.website相关脚本下载完整多说 CSS 样式文件: duosuo.css by Yeechong完整多说 embed-js 文件: embed-js by YeechongUA 浏览器标识修改多说调用地址主题 Yelee (v3.0) 在 Buer/layout/_...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 1,894
精华内容 757
关键字:

匿名头像图片