AndroidService中如何實(shí)現(xiàn)彈出對話框

小編這次要給大家分享的是Android Service中如何實(shí)現(xiàn)彈出對話框,文章內(nèi)容豐富,感興趣的小伙伴可以來了解一下,希望大家閱讀完這篇文章之后能夠有所收獲。

創(chuàng)新互聯(lián)建站是一家成都網(wǎng)站制作、做網(wǎng)站、外貿(mào)營銷網(wǎng)站建設(shè),提供網(wǎng)頁設(shè)計(jì),網(wǎng)站設(shè)計(jì),網(wǎng)站制作,建網(wǎng)站,按需開發(fā),網(wǎng)站開發(fā)公司,于2013年開始是互聯(lián)行業(yè)建設(shè)者,服務(wù)者。以提升客戶品牌價(jià)值為核心業(yè)務(wù),全程參與項(xiàng)目的網(wǎng)站策劃設(shè)計(jì)制作,前端開發(fā),后臺程序制作以及后期項(xiàng)目運(yùn)營并提出專業(yè)建議和思路。

一、手機(jī)版本問題,大多數(shù)文章沒有涉及這個(gè)點(diǎn),導(dǎo)致他們的代碼并無法正常使用

M版本以上需要使用的Type--> TYPE_APPLICATION_OVERLAY

AlertDialog.Builder builder=new AlertDialog.Builder(getApplicationContext()); 
builder.setTitle("提示"); 
builder.setMessage("service彈框"); 
builder.setNegativeButton("明白了",null); 
Dialog dialog=builder.create();

if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M){//6.0       
  dialog.getWindow().setType(WindowManager.LayoutParams.TYPE_APPLICATION_OVERLAY);        
}else {       
  dialog.getWindow().setType(WindowManager.LayoutParams.TYPE_SYSTEM_ALERT);        
} 
dialog.show();

同時(shí),因?yàn)樯婕安煌姹镜腁ndroid系統(tǒng)

AndroidManifest.xml 中聲明同時(shí)需要這兩個(gè)類型對應(yīng)的權(quán)限  

 <uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW"/>
  <uses-permission android:name="android.permission.SYSTEM_OVERLAY_WINDOW" />

二、權(quán)限問題,service中彈出的對話框?yàn)橄到y(tǒng)彈框,在M版本以上需要申請懸浮窗權(quán)限

Android 6.0 以前懸浮窗是默認(rèn)允許的

注意Android 6.0以后的使用

因?yàn)閼腋〈皺?quán)限 SYSTEM_ALERT_WINDOW 屬于特殊權(quán)限 ,需要自己特別單獨(dú)申請

特殊權(quán)限,顧名思義,就是一些特別敏感的權(quán)限,在Android系統(tǒng)中,主要由兩個(gè)

SYSTEM_ALERT_WINDOW(設(shè)置懸浮窗,進(jìn)行一些黑科技)
WRITE_SETTINGS (修改系統(tǒng)設(shè)置)

關(guān)于上面兩個(gè)特殊權(quán)限的授權(quán),做法是使用startActivityForResult啟動授權(quán)界面來完成。

申請方式:

private static final int REQUEST_CODE = 1;
private void requestAlertWindowPermission() {
  Intent intent = new Intent(Settings.ACTION_MANAGE_OVERLAY_PERMISSION);
  intent.setData(Uri.parse("package:" + getPackageName()));
  startActivityForResult(intent, REQUEST_CODE);
}

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
  super.onActivityResult(requestCode, resultCode, data);
  if (requestCode == REQUEST_CODE) {
   if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
     if (Settings.canDrawOverlays(this)) {
        Log.i("xqxinfo", "onActivityResult granted");
     }
   } 
  } 
}

看完這篇關(guān)于Android Service中如何實(shí)現(xiàn)彈出對話框的文章,如果覺得文章內(nèi)容寫得不錯(cuò)的話,可以把它分享出去給更多人看到。

本文名稱:AndroidService中如何實(shí)現(xiàn)彈出對話框
當(dāng)前地址:http://muchs.cn/article8/geohip.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供外貿(mào)網(wǎng)站建設(shè)、軟件開發(fā)、網(wǎng)站建設(shè)、搜索引擎優(yōu)化、移動網(wǎng)站建設(shè)云服務(wù)器

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)

商城網(wǎng)站建設(shè)