如何在service中动态申请权限

作者:超级管理员 更新时间:2017-10-31 15:58:58 来源:未知 点击:15642
 android6.0版本有的权限需要运行时申请,我新建的一个service,需要用到相机权限. public IBinder onBind(Intent intent) {        if (C
 android6.0版本有的权限需要运行时申请,我新建的一个service,需要用到相机权限.
 public IBinder onBind(Intent intent) {
        if (ContextCompat.checkSelfPermission(this, Manifest.permission.CAMERA) != PackageManager.PERMISSION_GRANTED) {
            ActivityCompat.requestPermissions(this, new String[]{Manifest.permission.CAMERA}, 2);

        }
}
提示 ActivityCompat.requestPermissions(this, new String[]{Manifest.permission.CAMERA}, 2);中的this不能由service转成activity?求解!!
-------------------------------
ActivityCompat.requestPermissions的第一个参数要求是Activity类型的,所以需要传入Activity或者其子类对象。传入Service对象会报错的。题中的this是指当前类的对象,即service对象,因此作为入参编译器会报错。
-------------------------------
引用 1 楼 bailichun19901111 的回复:
ActivityCompat.requestPermissions的第一个参数要求是Activity类型的,所以需要传入Activity或者其子类对象。传入Service对象会报错的。题中的this是指当前类的对象,即service对象,因此作为入参编译器会报错。


那么如何在service中动态申请权限呢?
-------------------------------
可以考虑向service传入一个activity的对象,或者在service中获取activity的一个对象,亦或者使用一个activity的静态对象。
另外,service建立连接的时候,可以使用一个ServiceConnection的onServiceConnected方法来完成权限的申请,即当服务建立连接时申请权限。
个人见解。
-------------------------------
fragment类里好像有对应的接口,不需要activity类型的参数
-------------------------------
引用 3 楼 bailichun19901111 的回复:
可以考虑向service传入一个activity的对象,或者在service中获取activity的一个对象,亦或者使用一个activity的静态对象。
另外,service建立连接的时候,可以使用一个ServiceConnection的onServiceConnected方法来完成权限的申请,即当服务建立连接时申请权限。
个人见解。


能讲的详细一点吗,谢谢
-------------------------------
回复不及时,望见谅~
service建立连接的时候,可以使用一个ServiceConnection的onServiceConnected方法来完成权限的申请:

public class MainActivity extends Activity {

ServiceConnection conn = new ServiceConnection() {

@Override
public void onServiceDisconnected(ComponentName name) {
// TODO Auto-generated method stub
}

@Override
public void onServiceConnected(ComponentName name, IBinder service) {
// 当service绑定成功时,会调用次方法,可以在此申请权限
if (ContextCompat.checkSelfPermission(MainActivity.this, Manifest.permission.CAMERA) != PackageManager.PERMISSION_GRANTED) {
            ActivityCompat.requestPermissions(MainActivity.this, new String[]{Manifest.permission.CAMERA}, 2);
}
}
};

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

Intent i = new Intent(this, MyService.class);
bindService(i, conn, Context.BIND_AUTO_CREATE);
}

}

至于想在service中获得一个activity的对象,可以尝试在你的activity中添加一个静态的activity成员,供service类调用:

public class MainActivity extends Activity {

public static Activity mActivity;

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

mActivity = this;
}

}
-------------------------------
楼主,我跟你问题一样,你怎么解决的?

推荐阅读

热门内容

怎么解决R 文件丢失的问题啊,搞了好久,

我是用as开发的项目,集成另外一个软件扫...

Intent传递Edittext内容到另

发送的Activity 名称是 Info...

关于服务器选用

本人菜鸟,以往编写app都是在局域网内测...

android中textview蚊子多显

如图所示,文本字数多了的话最后显示省略号...

【请教大神】webview如何引入swf

我在/res/raw中放入了一个.swf...

模拟器上可以显示我解析的json数据,但

本帖最后由ds1995于2016-05-...

如何层次显示图片缩略图?

如何像下图这样的层次感显示3个缩略图?没...

Android 在 Eclipse 中关

求大佬帮帮忙,很烦这个问题-------...

打开AndroidStudio出现Sta

昨天还可以打开,今天早上打开就出现这个报...

求助!!!关于二级评论的数据错位问题

之前看了通过Android Listvi...

最新内容

VS2010新建IT++工程时报错,求指教

修复或重装VS2010没用,2013也试过了,还是这个问题vs很恶心,不会配置,...

调用realloc函数后除了第一个其他全部变为野指针

#include #define QUEUE_INIT_SI...

如何在service中动态申请权限

 android6.0版本有的权限需要运行时申请,我新建的一个service,需...

经验分享 | 技术面试备忘录,饭可以乱吃,话不能乱说!

  这是关于技术面试要做和不要做的一个列表,主要用于算法面试。其中一些可能只适用...

搭建MySQL高可用负载均衡集群

软件大小:1.28MB资源类型:不详授权方式:免费/开源资料   主要内容:  ...

刘涛为安全感代言 金立M7成职场进阶之选

    近日“中年危机”这一话题热度持续走高,30岁焦虑越来越多的出现在大家的日...

全面屏千元双摄 荣耀畅玩7X明日开售

    明天(11月1日)上午10:08,荣耀在10月刚刚发布的首款全面屏手机荣...

往byte数组拷贝二进制图像数据之后,数据出现问题,大神帮忙看一看

运行到拷贝数据这段时这是读到的图像代码大神帮忙分析分析  瞅瞅~学会使用数据断点...

锤子全面屏新机曝光 坐等老罗的回复

    中关村在线消息:昨天,锤子官方正式宣布新品发布的消息——11月7日19:...

求大神解答

同样的printf语句,中间什么也没做,最后输出结果大不一样。代码如下#incl...

让安全如影随形 金立M7安全芯片打败焦虑

    10月30日,微博上出现了一个关于“焦虑”的微电影,传播十分迅速,片中内...

新中产走向30岁式焦虑 金立M7用"芯"陪伴

    随着我国人均收入水平的持续提高,新中产阶级的队伍也日益壮大,在这其中,已...

一加创始人国外晒一加5T样张 不怕暗光

    中关村在线消息:继一加5T海报和上半身清晰照曝光后,今天一加创始人Car...

18:9全面屏已无悬念 一加5T就长这样了

    中关村在线消息:下月,一加5T就发布了。继上周外媒曝光一组一加5T的海报...

如何避免网站关键词相互SEO竞争

在SEO诊断过程中遇到过很多SEOER喜欢用多个页面来优化相同的关键词,比如一位...

快看!听说Android有四大法宝!

  哈喽,艾瑞巴蒂,小编又在一个新的周二和大家见面了,古代有四大发明术:造纸术、...

vs2015+CMake+mingw编译linphone配置出错,不知道这个XercesC库怎么搞,自己

--- 已启动全部重新生成: 项目: EP_libxsd, 配置: Debug ...

实验排队功能实现(JAVA)

  pre-reade//将模块暴露出去  }  而对于com.hujian.e...

让 Python 更加充分的使用 Sqlite3

  我最近在涉及大量数据处理的项目中频繁使用sqlite3。我最初的尝试根本不涉...

PHP实现网站访问量计数器

简单的网站访问量计数器实现,具体如下首先说明思路:1.用户向服务器发出访问请求2...