1. 程式人生 > >Android Intent使用舉例

Android Intent使用舉例

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);