• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
2  * Copyright (C) 2010 The Android Open Source Project
3  *
4  * Licensed under the Apache License, Version 2.0 (the "License");
5  * you may not use this file except in compliance with the License.
6  * You may obtain a copy of the License at
7  *
8  *      http://www.apache.org/licenses/LICENSE-2.0
9  *
10  * Unless required by applicable law or agreed to in writing, software
11  * distributed under the License is distributed on an "AS IS" BASIS,
12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13  * See the License for the specific language governing permissions and
14  * limitations under the License.
15  */
16 
17 package com.android.email.activity;
18 
19 import android.app.Activity;
20 import android.content.ActivityNotFoundException;
21 import android.content.Intent;
22 import android.net.Uri;
23 import android.provider.Browser;
24 import android.view.WindowManager;
25 
26 import com.android.email.activity.setup.AccountSecurity;
27 import com.android.email2.ui.MailActivityEmail;
28 import com.android.emailcommon.provider.Account;
29 
30 /**
31  * Various methods that are used by both 1-pane and 2-pane activities.
32  *
33  * Common code used by the activities and the fragments.
34  */
35 public final class ActivityHelper {
ActivityHelper()36     private ActivityHelper() {
37     }
38 
39     /**
40      * Open an URL in a message.
41      *
42      * This is intended to mirror the operation of the original
43      * (see android.webkit.CallbackProxy) with one addition of intent flags
44      * "FLAG_ACTIVITY_CLEAR_WHEN_TASK_RESET".  This improves behavior when sublaunching
45      * other apps via embedded URI's.
46      *
47      * We also use this hook to catch "mailto:" links and handle them locally.
48      *
49      * @param activity parent activity
50      * @param url URL to open
51      * @param senderAccountId if the URL is mailto:, we use this account as the sender.
52      *        TODO When MessageCompose implements the account selector, this won't be necessary.
53      *        Pass {@link Account#NO_ACCOUNT} to use the default account.
54      * @return true if the URI has successfully been opened.
55      */
openUrlInMessage(Activity activity, String url, long senderAccountId)56     public static boolean openUrlInMessage(Activity activity, String url, long senderAccountId) {
57         // hijack mailto: uri's and handle locally
58         //***
59         //if (url != null && url.toLowerCase().startsWith("mailto:")) {
60         //    return MessageCompose.actionCompose(activity, url, senderAccountId);
61         //}
62 
63         // Handle most uri's via intent launch
64         boolean result = false;
65         Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(url));
66         intent.addCategory(Intent.CATEGORY_BROWSABLE);
67         intent.putExtra(Browser.EXTRA_APPLICATION_ID, activity.getPackageName());
68         intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_WHEN_TASK_RESET);
69         try {
70             activity.startActivity(intent);
71             result = true;
72         } catch (ActivityNotFoundException ex) {
73             // No applications can handle it.  Ignore.
74         }
75         return result;
76     }
77 
78     /**
79      * If configured via debug flags, inhibit hardware graphics acceleration.  Must be called
80      * early in onCreate().
81      *
82      * NOTE: Currently, this only works if HW accel is *not* enabled via the manifest.
83      */
debugSetWindowFlags(Activity activity)84     public static void debugSetWindowFlags(Activity activity) {
85         if (MailActivityEmail.sDebugInhibitGraphicsAcceleration) {
86             // Clear the flag in the activity's window
87             activity.getWindow().setFlags(0,
88                     WindowManager.LayoutParams.FLAG_HARDWARE_ACCELERATED);
89         } else {
90             // Set the flag in the activity's window
91             activity.getWindow().setFlags(WindowManager.LayoutParams.FLAG_HARDWARE_ACCELERATED,
92                     WindowManager.LayoutParams.FLAG_HARDWARE_ACCELERATED);
93         }
94     }
95 
showSecurityHoldDialog(Activity callerActivity, long accountId)96     public static void showSecurityHoldDialog(Activity callerActivity, long accountId) {
97         callerActivity.startActivity(
98                 AccountSecurity.actionUpdateSecurityIntent(callerActivity, accountId, true));
99     }
100 
101 }
102