Android Intent使用舉例
阿新 • • 發佈:2018-11-26
1、篩選本地檔案,通過uri獲取檔案的路徑
/**
* 選擇本地檔案,獲得檔案的 uri 。
* 通過setType可以設定檔案型別:比如篩選音視訊檔案、圖片等等
*/
Intent intent = new Intent(Intent.ACTION_GET_CONTENT);
intent.setType("*/*");
startActivityForResult(Intent.createChooser(intent, "choose file"), myRequestCode);
/**
* override 該方法,獲得檔案的 uri
*/
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
if (requestCode == myRequestCode) {
//獲得uri
Uri uri = data.getData();
//通過uri轉化為檔案的path:
// https://github.com/shanxu100/GUtils
String filePath = UriUtil.getFilePathFromUri(getApplicationContext(), uri);
}
}
2、進入應用的詳細設定頁面
/**
* 參考部落格
* http://blog.csdn.net/cbbbc/article/details/60148864
*/
Intent intent = new Intent();
//intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
//判斷SDK版本
if(Build.VERSION.SDK_INT >= 9){
intent.setAction(Settings.ACTION_MANAGE_OVERLAY_PERMISSION);
//intent.setAction("android.settings.APPLICATION_DETAILS_SETTINGS");
intent.setData(Uri.fromParts("package", getPackageName(), null));
} else if(Build.VERSION.SDK_INT <= 8){
intent.setAction(Intent.ACTION_VIEW);
intent.setClassName("com.android.settings","com.android.settings.InstalledAppDetails");
intent.putExtra("com.android.settings.ApplicationPkgName", getPackageName());
}
startActivityForResult(intent , myRequestCode);
3、 彈出“在其他應用上層顯示”的設定頁面,以及如何判斷App擁有相關許可權
/**
* 彈出在其他應用上顯示的設定頁面
*/
if(Build.VERSION.SDK_INT >= 23) {
Intent intent = new Intent();
//intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
intent.setAction(Settings.ACTION_MANAGE_OVERLAY_PERMISSION);
intent.setData(Uri.fromParts("package", getPackageName(), null));
startActivity(intent);
}
/**
* 如何判斷App是否有該許可權,可參考以下程式碼
*/
//target為具體的Activity的引用,即 ***Activity.this;
if (PermissionUtils.hasSelfPermissions(target, PERMISSION_NEEDSYSTEMALERTWINDOWPERMISSIN) || Settings.canDrawOverlays(target)) {
//申請成功
target.needSystemAlertWindowPermissin();
}
else {
if (!PermissionUtils.shouldShowRequestPermissionRationale(target, PERMISSION_NEEDSYSTEMALERTWINDOWPERMISSIN)) {
//不再提示
target.OnNeverAskAgain();
} else {
//申請許可權拒絕
target.OnPermissionDenied();
}
}
4、在Application中啟動Activity
//在App.java 檔案中,App類 繼承 Application,並在Manifest中修改了<application></application>標籤中的 name 屬性
Intent intent = new Intent(appContext, ***Activity.class);
//必須:開啟新的任務佇列
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(intent);
5、指定URL,用瀏覽器開啟
String url = "https://github.com/liaohuqiu/android-UCToast";
Intent myIntent = new Intent(Intent.ACTION_VIEW, Uri.parse(url));
startActivity(myIntent);