android判斷許可權
❶ android 怎麼判斷是否獲取許可權
用下面方法
// 判斷機器Android是否已經root,即是否獲取root許可權
protected static boolean haveRoot() {
int i = execRootCmdSilent("echo test"); // 通過執行測試命令來檢測
if (i != -1) {
return true;
}
return false;
}
❷ Android判斷是否有拍照許可權
想要判斷是否擁有拍照許可權,你可以這樣做:
android在開發中有時候要判斷應用中是否有某項許可權,或者想獲取到某個應用的許可權清單,可以使用以下方法
1) 判斷應用是否具有某個許可權
PackageManagerpm=getPackageManager();
booleanpermission=(PackageManager.PERMISSION_GRANTED==
pm.checkPermission("android.permission.RECORD_AUDIO","packageName"));
if(permission){
showToast("有這個許可權");
}else{
showToast("木有這個許可權");
}
❸ Android判斷當前應用是否有root許可權
/**
* 判斷當前手機是否有ROOT許可權
* @return
*/
public boolean isRoot(){
boolean bool = false;
try{
if ((!new File("/system/bin/su").exists()) && (!new File("/system/xbin/su").exists())){
bool = false;
} else {
bool = true;
}
Log.d(TAG, "bool = " + bool);
} catch (Exception e) {
}
return bool;
}
復制代碼
調用的代碼,大家好好看看吧
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
//當前應用的代碼執行目錄
upgradeRootPermission(getPackageCodePath());
}
復制代碼
執行上述代碼後,系統會彈出對話框「是否允許獲取Root許可權」,此時選擇允許即可。
❹ android 獲取應用是否有某個許可權
可以使用以下方法:
判斷應用是否具有某個許可權
PackageManager pm = getPackageManager();
boolean permission = (PackageManager.PERMISSION_GRANTED ==
pm.checkPermission("android.permission.RECORD_AUDIO", "packageName"));
if (permission) {
showToast("有這個許可權");
}else {
showToast("木有這個許可權");
}
獲取某個應用的許可權清單
PackageInfo pack = pm.getPackageInfo("packageName",PackageManager.GET_PERMISSIONS);
String[] permissionStrings = pack.requestedPermissions;
❺ 如何判斷android用戶拒絕了某項許可權
Android框架包含了對各種Camera以及其上可用的Camera功能的支持,它允許你在應用程序中抓拍照片和視頻。
注意事項
在開啟應用程序使用Android設備上的Camera功能之前,要考慮一些打算如何使用這些硬體功能的問題:
1. Camera需求:要考慮應用程序是否必須要運行在有Camera的設備上,如果必須,就要在應用程序的清單中聲明Camera需求;
2. 快照或定製Camera:應用程序准備如何使用Camera?是只對抓拍或視頻剪輯感興趣?還是要應用程序提供使用Camera的新方法?對於抓拍或剪輯,要考慮使用既存的Camera應用程序。對於開發定製化的Camera功能,請看下文的「構建Camera應用程序」
基礎
Android框架通過Camera API或Camera Intent來支持拍照和錄像,以下是相關的類:
Camera
這個類是控制設備Camera的主API。在構建一個Camera應用程序時,它被用於拍照或錄像。
SurfaceView
這個類用於向用戶實時的展現Camera的預覽。
MediaRecorder
這個類用於記錄來自Camera的視頻
Intent
MediaStore.ACTION_IMAGE_CAPTURE或MediaStore.ACTION_VIDEO_CAPTURE類型的Intent動作被用於不直接使用Camera對象來拍照或錄像。
清單聲明
在開始使用Camera API開發應用程序之前,要確保清單文件已經有了適當的聲明,以允許使用Camera硬體和其他相關的功能。
1. Camera許可權:應用程序必須申請使用設備Camera的許可權。
<uses-permissionandroid:name="android.permission.CAMERA"/>
注意:如果通過Intent來使用Camera,應用程序就不需要申請這個許可權。
2. Camera功能:應用程序還必須要聲明打算使用的Camera功能,例如:
<uses-featureandroid:name="android.hardware.camera"/>
把Camera功能添加到應用程序的清單中,會讓Google Play防止把程序安裝到不包含Camera或不支持你所需要的Camera功能的設備上。關於如何使用基於功能過濾的Google Play,請看Google Play和基於功能的過濾
如果應用程序能夠使用Camera或正確的操作Camera功能,但卻不需要它,那麼就應該在清單中指定android:required屬性,並把屬性值設置為false:
<uses-feature android:name="android.hardware.camera" android:required="false" />
3. 存儲許可權:如果應用程序要把圖片或視頻保存到設備的外部存儲器上(如SD卡),就必須在清單中指定這個許可權:
<uses-permissionandroid:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
4. 音頻錄音許可權:對於視頻採集的音頻錄音,應用程序必須要申請音頻採集許可權:
<uses-permissionandroid:name="android.permission.RECORD_AUDIO"/>
5. 位置定位許可權:如果應用程序要給圖片標記GPS位置信息,就必須申請位置定位許可權:
<uses-permissionandroid:name="android.permission.ACCESS_FINE_LOCATION"/>
關於獲得用戶位置的更多信息,請看「定位策略」
使用既存的Camera應用
在應用程序中不需要太多的額外代碼就可以快速的開啟拍照或錄像的方法是:使用Intent來調用一個既存的Android Camera應用程序。一個Camera Intent能夠通過既存的Camera應用程序和它返回給應用程序的播放控制來申請採集一張照片或一段視頻。本節會向你展示如何使用這項技術來採集一張圖片或一段視頻。
調用Camera Intent的過程會遵循以下這些大概的步驟:
1. 編寫一個Camera Intent:創建一個申請圖片或視頻的Intent對象,使用以下Intent類型之一:
MediaStore.ACTION_IMAGE_CAPTURE:從一個既存的Camera應用中申請圖片功能的Intent動作類型;
MediaStore.ACTION_VIDEO_CAPTURE:從一個既存的Camera應用中申請視頻功能的Intent動作類型。
2. 啟動Camera的Intent:使用startActivityForResult()方法來執行Camera的Intent。Intent啟動後,該Camera應用程序的用戶界面會顯示在屏幕上,並且用戶能夠拍照或錄像;
3. 接收Intent的結果:在你的應用程序中建立一個onActivityResult()方法來接收來自Camera Intent的回調和數據。當用戶完成成拍照或錄像(或者是取消操作),系統會調用這個方法。
圖像採集Intent
使用Camera Intent來採集圖像是你的應用程序用最少的代碼來拍照的快捷方式。一個圖片採集Intent能夠包含以下額外的信息:
MediaStore.EXTRA_OUTPUT:這個設置需要一個指定了保存圖片路徑和文件名的Uri對象。這個設置是可選,但強烈推薦使用。如果不指定這個值,Camera應用程序會用默認的名稱把採集到的圖片保存到默認的位置,這些默認值在Intent.getData()方法的返回欄位中指定。
以下示例演示了如何構建一個圖片採集Intent,並執行它。示例中GetOutputMediaFileUri()方法引用了下面「保存媒體文件」一節中的示例代碼:
private static final int CAPTURE_IMAGE_ACTIVITY_REQUEST_CODE = 100;
private Uri fileUri;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
// create Intent to take a picture and return control to the calling application
Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
fileUri = getOutputMediaFileUri(MEDIA_TYPE_IMAGE); // create a file to save the image
intent.putExtra(MediaStore.EXTRA_OUTPUT, fileUri); // set the image file name
// start the image capture Intent
startActivityForResult(intent, CAPTURE_IMAGE_ACTIVITY_REQUEST_CODE);
}
startActivityResult()方法執行完成後,用戶就會看到Camera應用程序的界面。用戶完成拍照(或取消操作)之後,用戶界面就會返回到你的應用程序中,並且你必須監聽onActivityResult()方法來接收Intent的結果,並繼續你的應用程序的執行。
視頻採集Intent
使用Camera Intent採集視頻是讓你的應用程序能夠用最少的代碼來錄像的一中快捷方式。視頻採集Intent能夠包含以下額外信息:
MediaStore.EXTRA_OUTPUT:這個設置要求用一個URI來指定保存視頻的路徑和文件名。雖然它是可選的,但強烈推薦使用這個設置。如果沒有指定這個設置,那麼Camera應用程序會把採集到的視頻用默認的名稱保存到默認的位置,默認的設置是在Intent的Intent.getData()方法域中返回的。
MediaStore.EXTRA_VIDEO_QUALITY:這個值的范圍是0~1,0的時候質量最差且文件最小,1的時候質量最高且文件最大。
MediaStore.EXTRA_DURATION_LIMIT:這個值以秒為單位,顯示視頻採集的時長。
MediaStore.EXTRA_SIZE_LIMIT:這個值以位元組為單位,限制視頻採集的文件大小。
下面的示例演示了如何構造一個視頻採集的Intent,並執行它。這個例子中的getOutputMediaFileUri()方法引用了下文的「保存媒體文件」中的示例代碼:
private static final int CAPTURE_VIDEO_ACTIVITY_REQUEST_CODE = 200;
private Uri fileUri;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
//create new Intent
Intent intent = new Intent(MediaStore.ACTION_VIDEO_CAPTURE);
fileUri = getOutputMediaFileUri(MEDIA_TYPE_VIDEO); // create a file to save the video
intent.putExtra(MediaStore.EXTRA_OUTPUT, fileUri); // set the image file name
intent.putExtra(MediaStore.EXTRA_VIDEO_QUALITY, 1); // set the video image quality to high
// start the Video Capture Intent
startActivityForResult(intent, CAPTURE_VIDEO_ACTIVITY_REQUEST_CODE);
}
當startActivityForResult()方法被執行時,用戶就會看到一個可編輯的Camera應用程序界面。在用戶完成錄像(或取消操作)之後,該用戶界面就會返回到你的應用程序中,並且你必須監聽onActivityResult()方法來接收Intent的結果,並繼續執行你的應用程序。
接收Camera Intent結果
一旦你構建並執行了一個圖片或視頻的Camera Intent,那麼就必須要配置你應用程序來接收Intent的結果。本節向你展示了如何監聽來自Camera Intent的回調,以便應用程序能夠對採集到的圖片或視頻做進一步的處理。
為了接收Intent的結果,必須在啟動Intent的那個Activity中重寫onActivityResult()方法。下面的示例演示了如何重寫onActivityResult()方法來採集圖片Camera Intent或視頻Camera Intent的返回結果:
private static final int CAPTURE_IMAGE_ACTIVITY_REQUEST_CODE = 100;
private static final int CAPTURE_VIDEO_ACTIVITY_REQUEST_CODE = 200;
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
if (requestCode == CAPTURE_IMAGE_ACTIVITY_REQUEST_CODE) {
if (resultCode == RESULT_OK) {
// Image captured and saved to fileUri specified in the Intent
Toast.makeText(this, "Image saved to:\n" +
data.getData(), Toast.LENGTH_LONG).show();
} else if (resultCode == RESULT_CANCELED) {
// User cancelled the image capture
} else {
// Image capture failed, advise user
}
}
if (requestCode == CAPTURE_VIDEO_ACTIVITY_REQUEST_CODE) {
if (resultCode == RESULT_OK) {
// Video captured and saved to fileUri specified in the Intent
Toast.makeText(this, "Video saved to:\n" +
data.getData(), Toast.LENGTH_LONG).show();
} else if (resultCode == RESULT_CANCELED) {
// User cancelled the video capture
} else {
// Video capture failed, advise user
}
}
}
一旦Activity接收到一個成功的結果,那麼你的應用程序就可以訪問指定位置中的被採集的圖片或視頻。
❻ Android怎麼判斷當前應用是否有root許可權
【Android】Android 代碼判斷是否獲取ROOT許可權
方法比較簡單,直接粘貼代碼
public synchronized boolean getRootAhth()
{
Process process = null;
DataOutputStream os = null;
try
{
process = Runtime.getRuntime().exec("su");
os = new DataOutputStream(process.getOutputStream());
os.writeBytes("exit\n");
os.flush();
int exitValue = process.waitFor();
if (exitValue == 0)
{
return true;
} else
{
return false;
}
} catch (Exception e)
{
Log.d("*** DEBUG ***", "Unexpected error - Here is what I know: "
+ e.getMessage());
return false;
} finally
{
try
{
if (os != null)
{
os.close();
}
process.destroy();
} catch (Exception e)
{
e.printStackTrace();
}
}
}
❼ Android帶許可權的操作,怎麼判斷是否被拒絕
Android帶許可權的操作,判斷是否被拒絕,可以使用AppOpsManager 這個類提供的方法來判斷,代碼如下:
/*
* 檢查某項許可權是否被允許還是拒絕
*
* @param context
* @param op
* 許可權代碼
* @return 1為拒絕,0為允許
*/
@TargetApi(19)
private int checkOp(Context context, int op) {
final int version = Build.VERSION.SDK_INT;
if (version >= 19) {
try {
AppOpsManager appOpsManager = (AppOpsManager) getSystemService(Context.APP_OPS_SERVICE);
Method dispatchMethod = AppOpsManager.class.getMethod(
"checkOp", new Class[] { int.class, int.class,
String.class });
int mode = (Integer) dispatchMethod.invoke(
appOpsManager,
new Object[] { op, Binder.getCallingUid(),
context.getPackageName() });
return mode;
} catch (Exception e) {
e.printStackTrace();
}
}
return -1;
} 望採納~ 謝謝!
❽ 怎麼用代碼判斷android手機是否開啟了ROOT 許可權
如果android手機開啟了root許可權,就和linux系統的root許可權一樣,主要就是活動了管理員許可權(最高許可權)。在android系統中,如果手機已經root,linux系統就會在底層生成一個以su結尾的文件,su是super的意思,代表超級許可權(也叫完全設備管理許可權),這時就代表手機開啟了root,如下圖所示:
代碼如下:
public static boolean isRoot()throws Exception{
boolean isRoot = false;
File su=new File("/system/bin/su");
File su2=new File("/system/bin/su");
if (su.exists() && su2.exists()){
isRoot = true;
} else {
isRoot = false;
}
return isRoot;
}
❾ 怎麼用代碼判斷android手機是否開啟了ROOT 許可權
通過第三方軟體獲得Root許可權,可以訪問和修改手機操作系統里幾乎所有的文件,但這樣操作有可能影響手機的穩定性,出現死機、重啟等人為性故障。
另外獲取許可權後一般對存儲器和CPU等主板上主要部件引起不良。Root屬於修改操作系統軟體,按照條例不屬於包修范圍。為了提升顧客滿意度,對Root顧客提供免費升級固件服務,如果Root已影響到手機硬體需要更換主板,則需要收取主板費用。
若您的機器Root後需將機器恢復到原來的系統版本,請將機器送到服務中心,由售後工程師幫助檢查處理。自行將設備恢復出廠設置是無法取消Root許可權的。
❿ Android 判斷是否有錄音許可權的方法
一、簡介:android6.0引入了新的許可權機制,開發者可以使用checkSelfPermission()和requestPermissions()很輕松的檢測並獲取相應的錄音許可權。二、android判斷app是否具有錄音許可權,以某應用為例,把該應用的錄音許可權給禁止掉,然後開始錄音。 1、6.0系統上的界面 2、如上,在6.0的環境下可以很簡單的判斷應用是否具有錄音許可權。