android播放許可權
㈠ android 使用MediaPlayer播放音樂要添加的許可權是什麼
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE">
<uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS">
在讀取音樂文件的時候,為了同步輸入輸出,是需要寫的許可權的
㈡ 安卓手機怎麼開啟視頻許可權
用手機打開qq視頻顯示不存在或設置許可權是因為許可權設置中禁止了打開攝像頭,在許可權管理中開啟即可,如果手機中找不到軟體許可權管理設置,可以通過第三方軟體實現,比如360安全衛士,操作步驟如下:
1、在手機中找到360安全衛士客戶端並點擊打開。
2、來到360安全衛士首頁,點擊下面的「軟體管理」。
3、接著點擊「許可權管理」,並進入「QQ許可權設置」。
4、然後在QQ的隱私許可權中,把「打開攝像頭」這項許可權設置為「允許」即可。
㈢ Android 播放 網頁MP4 需要哪些許可權
1,訪問網路需要加這個許可權
<uses-permission android:name="android.permission.INTERNET" />
㈣ android 使用MediaPlayer播放音樂要添加的許可權是什麼
android 使用MediaPlayer播放音樂要添加的許可權是:
public Boolean playMusic(Context myContext) {
bgMusic = new MediaPlayer();
bgMusic = MediaPlayer.create(myContext, R.raw.music);
bgMusic.setLooping(true);
try {
if (bgMusic != null) {
bgMusic.stop();
}
bgMusic.prepare();
bgMusic.start();
return true;
} catch (IllegalStateException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
return false;
}
㈤ android開發播放音樂需要聲明什麼許可權
MEDIA_CONTENT_CONTROL
MODIFY_AUDIO_SETTINGS
READ_EXTERNAL_STORAGE
只是播放的話有這幾個應該夠了,如果需要播放流媒體的話還要再加幾個:
ACCESS_NETWORK_STATE
ACCESS_WIFI_STATE
INTERNET
㈥ 聊聊Android6.0 以上系統許可權
一個新建的Android應用默認是沒有許可權的,這意味著它不能執行任何可能對用戶體驗有不利影響的操作或者訪問設備數據。為了使用受保護的功能,你必須包含一個或者多個標簽在你的app manifest中。
1、Android 6.0中許可權分為兩種,普通許可權和危險許可權(即運行時許可權,下面統稱運行時許可權)。
1.1普通許可權
如果你的應用manifest中只申明了普通許可權(也就是說,這些許可權對於用戶隱私和設備操作不會造成太多危險),系統會自動授予這些許可權。
1.2運行時許可權
如果你的應用manifest中聲明了運行時許可權(也就是說,這些許可權可能會影響用戶隱私和設備的普通操作),系統會明確的讓用戶決定是否授予這些許可權。系統請求用戶授予這些許可權的方式是由當前應用運行的系統版本來決定的。
1.2.1 Android6.0及以上的系統
如果你的設備運行的是Android6.0(API level 23)及以上的系統,並且你的應用的targetSdkVersion也是23或者更高,那麼應用向用戶請求這些許可權是實時的。這意味著用戶可以隨時取消 這些運行時許可權的授權。所以應用在每次需要用到這些運行時許可權的時候都需要去檢查是否還有這些許可權的授權。
1.2.2 Android 5.1及以下的系統
如果你的設備運行在Android5.1(API level 22)及以下的系統中,或者你的app的targetSdkVersion是22或者更低。系統會請求用戶在apk安裝的時候授予這些許可權。
如果你的應用更新的時候添加了一個許可權,系統會在用戶更新應用的時候請求用戶授予這個許可權 , 一旦用戶安裝了這個應用,唯一可以取消授權的方式就是卸載掉這個應用。 注意這句話的意思,想一下如果app的targetSdkVersion是22或者以下,但是運行在Android6.0及以上的設備中會有什麼問題?後面會分析這個問題 。
常常來說一個授權失敗會拋出SecurityException,然而這並不是在 所有情況下都會發生。比如,發送一個廣播去檢查授權(SendBroadcast(Intent)),數據會被發送給所有接收者,但是當這個方法的請求返 回的時候,你不會收到任何一個因為授權失敗拋出的異常,其實在大多數情況下,授權失敗只會列印系統日誌。
1.3自動許可權調整
簡單的說,如果你的app targetSdkVersion是3,而你當前運行的系統版本是4,那麼在android version 4 中新添加的許可權會自動添加到你的app中。
比如 WRITE_EXTERNAL_STORAGE許可權是在api 4的時候添加的,而你的應用的targetSdkVersion是3,那麼這個許可權會自動添加到你的應用中。而且在官方商店上這個許可權也會列出來(盡管可能你並不需要這個許可權)。
所以建議經常更新你的targetSdkVersion到最新版本。
下面來回答上面的那個問題,如果app的targetSdkVersion是22或者以下,但是運行在android 6.0或以上版本的手機中,會發生什麼?
安裝過程中,會一起請求用戶授予所有 許可權,如果用戶拒絕,將不能安裝這個app,只有用戶全部同意這些授權,才能安裝這個應用,但是問題來了,安裝好了這個應用之後,android6.0以 上的系統中,用戶是可以去設置中取消授權的,而且是隨時都可以取消,所以很多運行時許可權可能也得不到,目前官方的做法是,如果用戶取消該項授權,那麼依賴 該項授權的方法的返回值為null,所以你的app可能會報空指針異常。以後是否會針對22以下的app做改變還不得而知,畢竟crash是很難讓人接受 的,但是crash是由用戶造成的,用戶應該也可以理解。
2、普通許可權和運行時許可權
系統許可權會被傳遞給兩種不同的保護級別,我們所知道這兩種最重要的保護級別就是普通許可權和運行時許可權。
2.1 普通許可權
普通許可權的覆蓋區域是在你的app需要訪問沙盒以外的數據和資源的時候,但是對用戶隱私和其他app的操作只有很少的影響,比如開啟手電筒的許可權。這個時候,系統會自動授權這些普通許可權。
Normal Permissions:
ACCESS_LOCATION_EXTRA_COMMANDS
ACCESS_NETWORK_STATE
ACCESS_NOTIFICATION_POLICY
ACCESS_WIFI_STATE
BLUETOOTH
BLUETOOTH_ADMIN
BROADCAST_STICKY
CHANGE_NETWORK_STATE
CHANGE_WIFI_MULTICAST_STATE
CHANGE_WIFI_STATE
DISABLE_KEYGUARD
EXPAND_STATUS_BAR
GET_PACKAGE_SIZE
INSTALL_SHORTCUT
INTERNET
KILL_BACKGROUND_PROCESSES
MODIFY_AUDIO_SETTINGS
NFC
READ_SYNC_SETTINGS
READ_SYNC_STATS
RECEIVE_BOOT_COMPLETED
REORDER_TASKS
REQUEST_INSTALL_PACKAGES
SET_ALARM
SET_TIME_ZONE
SET_WALLPAPER
SET_WALLPAPER_HINTS
TRANSMIT_IR
UNINSTALL_SHORTCUT
USE_FINGERPRINT
VIBRATE
WAKE_LOCK
WRITE_SYNC_SETTINGS
2.2 運行時許可權
運行時許可權的覆蓋區域是你的app想要的數據和資源涉及用戶的隱私信息,或者是可能潛在的影響用戶的存儲數據或者其他app的操作。比如,請求獲取用戶聯系人信息的許可權。如果一個app申明了運行時許可權,用戶必須明確的授權這些許可權給app。
2.3 許可權組
所有的運行時許可權都屬於對應的許可權組,如果你的app運行在android6.0及以上系統,下面的規則都適用:
2.3.1 如果一個app在manifest中請求了一個運行時許可權,而且app還沒有得到這個運行時許可權所在的許可權組中的任何一個運行時許可權授權,那麼系統會彈出一個對話框,描述app想要訪問的運行時許可權的許可權組,這個對話框不會描述這個許可權組中某一個特定的許可權。比如,你的app想要請求READ_CONTACT許可權,對話框只會描述app想要請求設備的聯系人,如果用戶授權通過,系統會授予app所請求的該項許可權。
2.3.2 如果一個app在manifest中請求一個運行時許可權,並且這個app已經在相同的許可權組中有了另一個運行時許可權的授權,那麼系統不會彈出對話框,而是會立即授予app該項運行時許可權的授權。比如,一個app之前請求過一個READ_CONTACT的許可權並且被授權通過,之後又請求一個WRITE_CONTACT(在同一個許可權組)許可權,那麼系統會自動授予該許可權。
其實所有許可權(普通許可權、運行時許可權、用戶自定義許可權)都屬於特定的許可權組,但是只有運行時許可權的許可權組才會影響用戶體驗。
2.3.3運行時許可權組和許可權組列表
group:android.permission-group.CONTACTS
permission:android.permission.WRITE_CONTACTS
permission:android.permission.GET_ACCOUNTS
permission:android.permission.READ_CONTACTS
group:android.permission-group.PHONE
permission:android.permission.READ_CALL_LOG
permission:android.permission.READ_PHONE_STATE
permission:android.permission.CALL_PHONE
permission:android.permission.WRITE_CALL_LOG
permission:android.permission.USE_SIP
permission:android.permission.PROCESS_OUTGOING_CALLS
permission:com.android.voicemail.permission.ADD_VOICEMAIL
group:android.permission-group.CALENDAR
permission:android.permission.READ_CALENDAR
permission:android.permission.WRITE_CALENDAR
group:android.permission-group.CAMERA
permission:android.permission.CAMERA
group:android.permission-group.SENSORS
permission:android.permission.BODY_SENSORS
group:android.permission-group.LOCATION
permission:android.permission.ACCESS_FINE_LOCATION
permission:android.permission.ACCESS_COARSE_LOCATION
group:android.permission-group.STORAGE
permission:android.permission.READ_EXTERNAL_STORAGE
permission:android.permission.WRITE_EXTERNAL_STORAGE
group:android.permission-group.MICROPHONE
permission:android.permission.RECORD_AUDIO
group:android.permission-group.SMS
permission:android.permission.READ_SMS
permission:android.permission.RECEIVE_WAP_PUSH
permission:android.permission.RECEIVE_MMS
permission:android.permission.RECEIVE_SMS
permission:android.permission.SEND_SMS
permission:android.permission.READ_CELL_BROADCASTS
可以通過adb shell pm list permissions -d -g進行查看。
看到上面的dangerous permissions,會發現一個問題,好像危險許可權都是一組一組的,恩,沒錯,的確是這樣的,那麼有個問題:分組對我們的許可權機制有什麼影響嗎?的確是有影響的,如果app運行在Android 6.x的機器上,對於授權機制是這樣的。如果你申請某個危險的許可權,假設你的app早已被用戶授權了 同一組 的某個危險許可權,那麼系統會立即授權,而不需要用戶去點擊授權。比如你的app對READ_CONTACTS已經授權了,當你的app申請WRITE_CONTACTS時,系統會直接授權通過。此外,對於申請時彈出的dialog上面的文本說明也是對整個許可權組的說明,而不是單個許可權(ps:這個dialog是不能進行定製的)。不過需要注意的是,不要對許可權組過多的依賴,盡可能對每個危險許可權都進行正常流程的申請,因為在後期的版本中這個許可權組可能會產生變化。
3、相關API
3.1 在AndroidManifest文件中添加需要的許可權。
這個步驟和我們之前的開發並沒有什麼變化,試圖去申請一個沒有聲明的許可權可能會導致程序崩潰。
3.2 檢查許可權
if (ContextCompat.checkSelfPermission(thisActivity,
Manifest.permission.READ_CONTACTS)
!= PackageManager.PERMISSION_GRANTED) {
}else{
//
}
這里涉及到一個API,ContextCompat.checkSelfPermission,主要用於檢測某個許可權是否已經被授予,方法返回值為PackageManager.PERMISSION_DENIED或者PackageManager.PERMISSION_GRANTED。當返回DENIED就需要進行申請授權了
3.3 申請授權
ActivityCompat.requestPermissions(thisActivity,
new String[]{Manifest.permission.READ_CONTACTS},
MY_PERMISSIONS_REQUEST_READ_CONTACTS);
該方法是非同步的,第一個參數是Context;第二個參數是需要申請的許可權的字元串數組;第三個參數為requestCode,主要用於回調的時候檢測。可以從方法名requestPermissions以及第二個參數看出,是支持一次性申請多個許可權的,系統會通過對話框 逐一 詢問用戶是否授權。
3.4 處理許可權申請回調
@Override
(intrequestCode,
String permissions[],int[] grantResults) {
switch(requestCode) {
case MY_PERMISSIONS_REQUEST_READ_CONTACTS: {
// If request is cancelled, the result arrays are empty.
if(grantResults.length >0&& grantResults[0] == PackageManager.PERMISSION_GRANTED) {
// permission was granted, yay! Do the contacts-related task you need to do.
}else{
// permission denied, boo! Disable the functionality that depends on this permission.
}
return;
}
}
}
ok,對於許可權的申請結果,首先驗證requestCode定位到你的申請,然後驗證grantResults對應於申請的結果,這里的數組對應於申請時的第二個許可權字元串數組。如果你同時申請兩個許可權,那麼grantResults的length就為2,分別記錄你兩個許可權的申請結果。如果申請成功,就可以做你的事情了!
那麼將上述幾個步驟結合到一起就是:
// Here, thisActivity is the current activity
if (ContextCompat.checkSelfPermission(thisActivity,
Manifest.permission.READ_CONTACTS)
!= PackageManager.PERMISSION_GRANTED) {
// Should we show an explanation?
if (ActivityCompat.(thisActivity,
Manifest.permission.READ_CONTACTS)) {
// Show an expanation to the user *asynchronously* -- don't block
// this thread waiting for the user's response! After the user
// sees the explanation, try again to request the permission.
} else {
// No explanation needed, we can request the permission.
ActivityCompat.requestPermissions(thisActivity,
new String[]{Manifest.permission.READ_CONTACTS},
MY_PERMISSIONS_REQUEST_READ_CONTACTS);
// MY_PERMISSIONS_REQUEST_READ_CONTACTS is an
// app-defined int constant. The callback method gets the
// result of the request.
}
}
謝幕,至此有關於android6.0 以上許可權相關的內容已經詳細講完了!
㈦ android中mediaplayer播放網路音頻文件要設置許可權嗎
音頻播放都是放在Service中進行,而界面是在Activity中,所以兩者之間的通信是核心。你的問題可能是有兩個player對象導致的。
㈧ 安卓系統手機如何設置軟體許可權
若使用的是vivo手機,可參考進入設置--應用與許可權/更多設置--許可權管理--許可權中設置應用的許可權。
㈨ android的錄音和播放需要哪些許可權
清單文件裡面加上下面2種許可權
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.RECORD_AUDIO" />