安卓7.0開啟相機(許可權與內容提供器)
本文大部分來自第二行程式碼,只是部分許可權問題改動與說明
其中主要問題就是安卓6.0許可權問題和7.0url問題。
首先需要設定許可權
<!-- 攝像頭 -->
<uses-permission android:name="android.permission.CAMERA" />
<!-- 獲取sd卡寫的許可權,用於檔案上傳和下載 -->
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
這是使用照相機和可以修改記憶體的許可權2.然後是關於file的uri
安卓7.0要求,禁止暴露file的uri,否則會報錯FileUriExposeException錯誤,必須使用fileProvider把uri封裝再傳給外部。配置如下
① 設定在<manifest>
裡設定
<application
<provider android:name="android.support.v4.content.FileProvider" android:authorities="com.example.mbmob.fileprovider"
<!-- 此處的authorities可以設定任意值,但是不同應用間必須不同,否則會因為資料庫重複無法安裝 -->
android:exported="false"
<!--必須為false ,意思是不可被分享,這是fileprovide要求-->
android:grantUriPermissions="true">
<meta-data android:name="android.support.FILE_PROVIDER_PATHS"
android:resource="@xml/file_paths" />
<!--meta指定uri的共享路徑,並且引用了一個叫@xml/file_paths資源-->
</provider>
</application>
②接下來在右擊res,new————directory,建立xml目錄,然後生成file_paths,內容複製如下
<?xml version="1.0" encoding="utf-8"?>
<paths xmlns:android="http://schemas.android.com/apk/res/android">
<external-path name ="my_images" path=""/>
<!--name名字任意,paths為空說明整個sd卡可共享(可能紅色報錯,不用管)-->
</paths>
3拍照的相關程式碼
首先檢測許可權,照相的許可權和訪問記憶體卡的許可權
if((ContextCompat.checkSelfPermission(getActivity().getBaseContex(),Manifest.permission.CAMERA)!=PackageManager.PERMISSION_GRANTED)||ContextCompat.checkSelfPermission(getActivity().getBaseContext(), Manifest.permission.WRITE_EXTERNAL_STORAGE) !=PackageManager.PERMISSION_GRANTED)) {
//如果沒有授權,則請求授權
ActivityCompat.requestPermissions(getActivity(), new String[]{Manifest.permission.CAMERA, Manifest.permission.WRITE_EXTERNAL_STORAGE}, 1311);
//String陣列中為申請的許可權,第一個是相機,第二個為修改記憶體,最後的引數即為申請授權的返回值,我設定的1311
、、
} else {
zhaoxiang();
}
public void onRequestPermissionsResult(int requestCode, String[] permissions, int[] grantResults) {
switch (requestCode) {
case 1311:
if (grantResults.length > 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED&& grantResults[1] == PackageManager.PERMISSION_GRANTED) {
zhaoxiang();
} else {
Toast.makeText(getContext(),"沒有許可權開啟相機",Toast.LENGTH_SHORT).show();
}
break;
default:
}
}`
public void zhaoxiang() {
Calendar c = Calendar.getInstance();
int year = c.get(Calendar.YEAR);
int month = c.get(Calendar.MONTH);
int day = c.get(Calendar.DAY_OF_MONTH); headImage = new File(Environment.getExternalStorageDirectory() + "/mbmob/", year + "-" + month + "-" + day + i.getName() + "head.jpg");
//建立一個file,第一個指數路徑,第二個為圖片名字 其中,路徑為sd卡中一個名為mbmob的檔案下,headImage是我提前宣告的一個空file
//如果不加/mbob/這句,就是獲得手機裡一個專門放置應用快取的地方 get那個方法就是獲取這個位置
try {
if (headImage.exists()) {
headImage.delete();
}
headImage.createNewFile();
//如果原來就有這個檔案 刪除
} catch (IOException e) {
e.printStackTrace();
}
if (Build.VERSION.SDK_INT >= 24) {
//判斷安卓版本 高於7.0
imageUri = FileProvider.getUriForFile(getActivity(), "com.example.mbmob.fileprovider", headImage);
// 第一個是content ,第二個即為在provider裡是設定的author那個,第三個是File物件
} else {
//低於7.0
imageUri = Uri.fromFile(headImage);
//獲取圖片路徑
}
Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
intent.putExtra(MediaStore.EXTRA_OUTPUT, imageUri);
//指定圖片的輸出地址
startActivityForResult(intent, TAKE_PHOTO);
}
public void onActivityResult(int requestCode, int resultCode, Intent data) {
switch (requestCode) {
case TAKE_PHOTO:
//照相結束後就會返回,此時呼叫這個
if (resultCode == RESULT_OK) {
此時獲得的headimage就是儲存了圖片的,這裡如何利用自己定義
}
break;
default:
break;
}
}
“`
相關推薦
安卓7.0開啟相機(許可權與內容提供器)
本文大部分來自第二行程式碼,只是部分許可權問題改動與說明 其中主要問題就是安卓6.0許可權問題和7.0url問題。 首先需要設定許可權 <!-- 攝像頭 --> <uses-permission android:name="a
小米Note標配版 雙網通刷原生安卓7.0教程(詳細)
小米note手機用了一段時間後,開始儲存不夠用了,於是想重新刷一次機,順便清洗一下記憶體。 首先備份好手機的資料,由於我手機玩遊戲建立了很多qq的小號,所以我先把這些小號備份一下,然後就是微信備份!把資料備份到電腦端。 然後開始正式工作: 1.下載ROM包,我下載的是秋大
安卓7.0許可權及預覽版問題
昨天一覺醒來,發現安卓7.0的首個開發者預覽版竟然釋出了,驚喜之餘立馬抓起Nexus5準備升級,結果立馬被迎頭了一盆冷水,支援的裝置只有Nexus6、Nexus 5X、Nexus 6P、Nexus
安卓 7.0之後 呼叫系統相機崩潰
解決方案: 1、(推薦)7.0之後你的app就算有許可權,給出一個URI之後手機也認為你沒有許可權。不用修改原有程式碼,在Application的oncreate方法中: if (Build.VER
安卓7.0拍照遇到 Uri暴露錯誤
meta 技術 () code hid con 目錄 view file 最近,項目又做到,調用攝像頭拍照獲取圖片這個功能。 用以前的代碼直接用,發現在Android7.0上使用時會出現問題。 Android6.0之後,動態申請權限已成常態。 調用攝像頭拍照獲取圖片這個功能
關於安卓7.0及以上的Https請求抓包問題android:networkSecurityConfig
Android 7.0(API 級別 24)及更高版本預設只承認系統CA,所以預設是安全的,不需要配置。如果想要系統承認使用者自己安裝的CA,則修改配置(比如除錯時會需要抓包)。 面向 Android 6.0(API 級別 23)及更低版本應用的預設配置如下所示,這段配置的意思是,承認系
安卓專案實戰之APP版本升級更新,適配安卓7.0
前言 APP的版本升級主要分為兩種方式: 1.應用市場升級 2.應用內升級 而應用內升級的方式是目前大多數APP採用的升級更新方式。 應用內升級的模式 按照不同的業務需求又可以分為兩種: 1,強制性更新 如果APP有更新,那麼則彈出更新提示對話方塊,並且
安卓6.0之後——動態獲取許可權封裝
轉載請註明出處 https://blog.csdn.net/lebang08/article/details/52751088 今天將專案中需要授權的地方,增加了判斷 -----------關於6.0許可權的封裝。 大家知道,在android6.0之後,谷歌為了更
安卓專案實戰之:安卓7.0優化下的全域性網路連線狀態監聽
須知:Android7.0起網路變化監聽隱式廣播被關閉 在 Android 7.0 版本中除了提供諸多多視窗支援、活動通知、後臺優化、訊息傳遞服務和Vulkan 等新特性和功能外,還對系統和 API 行為做出了各種變更,其中最重要的一點:Android7.0為了進行後臺的優化刪除了三
安卓7.0以上作業系統長按桌面logo建立快捷方式
本文已授權微信公眾號:鴻洋(hongyangAndroid)在微信公眾號平臺原創首發。 就在前幾天的一個晚上, Google召開了它的秋季釋出會,
安卓獲取渠道名渠道id Android獲取裝置唯一標識的終極解決方法,防止安卓7.0時崩潰問題
一,先說獲取渠道名(這裡以友盟為例) /* * 4.5.1新加渠道名欄位,用來傳給後臺去統計各個渠道下載量 * */ public static String getSource() { //獲取渠道名 Strin
安卓7.0 WebView 載入網頁空白解決辦法
mainWebView.setWebViewClient(new WebViewClient(){ @Override public boolean shouldOverrideUrlLoading(W
popwindow 在安卓7.0上顯示位置錯誤以及在6.0下點選外部不能消失的情況解析
popwindow在日常使用的過程中頻率很高 ,一般用起來也是得心應手,但是也是有很多坑存在的,在這個版本的迭代中就遇到了一些問題,解決起來很簡單,但是以後開發中肯定要注意的 popwindow 出現的View not attached to window
PopupWindow在安卓7.0及7.1系統上位置顯示異常
做專案時發現Popupwindow在7.0及以上的裝置上顯示位置異常,6.0上及以下卻沒有問題: 如下圖所示 解決方式:重寫Popupwindow的showasdrop方法: /** * 建立時間: 2017/12/5. * 創 建 人:
android apk安裝包修改了之後在安卓7.0系統上無法安裝的解決辦法
我們在開發app的時候,往往在打包完之後還要進行分發。所以需要在安裝包中寫入一定的檔案。比如渠道或者動態新增啟動時預載入的資訊。但是現安卓開發一般用的是Android Studio ,而且Studio 版本一般都是2.2以上。問題的關鍵就是在這裡,在Studio 2.2以後
安卓7.0上在狀態列上加電池百分比
》》》》》》 安卓7.0上的statusbar上是預設不帶電池百分比的。需要我們加上去。有兩個方法,先寫第一個方法 1. 在frameworks/base/packages/SystemUI/res/layout/system_icons.xml
安卓7.0手機上遇到的app升級問題終極解決方案
相容Android 7.0 App升級 一、在AndroidManifest.xml清單檔案中註冊Provider <provider android:name="android.support.v4.content.FileProvider" andr
華為基於安卓7.0的Emui5.0實戰技術開放日-成都、北京、廣州
華為釋出了基於安卓7.0的EMUI5.0,通過智慧學習系統優化安卓資源排程管理,可謂大顯身手。EMUI5.0是一款從UI設計到互動,再到效能各方面都有極大提升的系統。華為將在成都、北京、廣州舉辦三場EMUI5.0技術開放日,與資深極客、技術專家和花粉針對EMUI
解決安卓7.0系統裁剪圖片出錯問題
Android7.0中為了提高私有檔案的安全性,對file:// Uri 型別的Uri做出了限制,導致一些APP的功能無法正常使用。前幾天的一個頭像裁剪問題被提上了日程,開始只是修改了拍照的Uri,忘記了還要裁剪,因為直接使用的系統裁剪導致裁剪出了問題。下面
解決安卓7.0拍照,相簿選擇崩潰的問題(包括壓縮圖片在內)
在今天,專案的功能開發的告一段落了,回顧之前遇到的難題,覺得有必要在部落格中記錄一下,也方便下次自己能快速解決問題,同時,也能給遇到同樣問題的人一個參考。 這問題就是當用戶使用android 7.0系統的手機進行拍照的時候,崩潰的問題。崩潰的原因,網上有很多詳