2 * Copyright (C) 2007-2011 OpenIntents.org
\r
4 * Licensed under the Apache License, Version 2.0 (the "License");
\r
5 * you may not use this file except in compliance with the License.
\r
6 * You may obtain a copy of the License at
\r
8 * http://www.apache.org/licenses/LICENSE-2.0
\r
10 * Unless required by applicable law or agreed to in writing, software
\r
11 * distributed under the License is distributed on an "AS IS" BASIS,
\r
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
\r
13 * See the License for the specific language governing permissions and
\r
14 * limitations under the License.
\r
17 package org.openintents.filemanager;
\r
19 import android.app.AlertDialog;
\r
20 import android.app.Dialog;
\r
21 import android.content.ActivityNotFoundException;
\r
22 import android.content.Context;
\r
23 import android.content.DialogInterface;
\r
24 import android.content.DialogInterface.OnClickListener;
\r
25 import android.content.Intent;
\r
26 import android.net.Uri;
\r
27 import android.util.Log;
\r
28 import android.view.View;
\r
29 import android.widget.Toast;
\r
32 * @version 2009-02-04
\r
33 * @version 2011-02-07: Allow for string arguments.
\r
36 public class DownloadAppDialog extends AlertDialog implements OnClickListener {
\r
37 private static final String TAG = "StartSaveActivity";
\r
40 String mDownloadAppName;
\r
41 String mDownloadPackageName;
\r
42 String mDownloadWebsite;
\r
43 String mMessageText;
\r
45 boolean mMarketAvailable;
\r
47 public DownloadAppDialog(Context context) {
\r
52 public DownloadAppDialog(Context context, int message_id, int download_name_id, int download_package_id, int download_website_id) {
\r
55 set(message_id, download_name_id, download_package_id, download_website_id);
\r
58 public DownloadAppDialog(Context context, String message, String download_name, String download_package, String download_website) {
\r
61 set(message, download_name, download_package, download_website);
\r
64 protected void set(int message_id, int download_name_id,
\r
65 int download_package_id, int download_website_id) {
\r
66 String message = mContext.getString(message_id);
\r
67 String download_name = mContext.getString(download_name_id);
\r
68 String download_package = mContext.getString(download_package_id);
\r
69 String download_website = mContext.getString(download_website_id);
\r
70 set(message, download_name, download_package, download_website);
\r
73 protected void set(String message, String download_name,
\r
74 String download_package, String download_website) {
\r
75 mDownloadAppName = download_name;
\r
76 mDownloadPackageName = download_package;
\r
77 mDownloadWebsite = download_website;
\r
79 mMarketAvailable = MarketUtils.isMarketAvailable(mContext, mDownloadPackageName);
\r
81 StringBuilder sb = new StringBuilder();
\r
84 if (mMarketAvailable) {
\r
85 sb.append(mContext.getString(R.string.oi_distribution_download_market_message,
\r
88 sb.append(mContext.getString(R.string.oi_distribution_download_message,
\r
91 mMessageText = sb.toString();
\r
92 setMessage(mMessageText);
\r
94 setTitle(mContext.getString(R.string.oi_distribution_download_title,
\r
97 setButton(mContext.getText(R.string.oi_distribution_download_market), this);
\r
98 setButton2(mContext.getText(R.string.oi_distribution_download_web), this);
\r
99 setButton3(mContext.getText(android.R.string.cancel), this);
\r
102 public void onClick(DialogInterface dialog, int which) {
\r
105 if (which == BUTTON1) {
\r
106 intent = MarketUtils.getMarketDownloadIntent(mDownloadPackageName);
\r
107 startSaveActivity(intent);
\r
108 } else if (which == BUTTON2) {
\r
109 intent = new Intent(Intent.ACTION_VIEW);
\r
110 Uri uri= Uri.parse(mDownloadWebsite);
\r
111 intent.setData(uri);
\r
112 startSaveActivity(intent);
\r
116 public static void onPrepareDialog(Context context, Dialog dialog) {
\r
117 DownloadAppDialog d = (DownloadAppDialog) dialog;
\r
119 boolean has_android_market = MarketUtils.isMarketAvailable(context, d.mDownloadPackageName);
\r
121 dialog.findViewById(android.R.id.button1).setVisibility(
\r
122 has_android_market ? View.VISIBLE : View.GONE);
\r
126 * Start an activity but prompt a toast if activity is not found
\r
127 * (instead of crashing).
\r
132 public void startSaveActivity(Intent intent) {
\r
134 mContext.startActivity(intent);
\r
135 } catch (ActivityNotFoundException e) {
\r
136 Toast.makeText(mContext,
\r
137 R.string.oi_distribution_update_error,
\r
138 Toast.LENGTH_SHORT).show();
\r
139 Log.e(TAG, "Error starting second activity.", e);
\r