Merge "Lint fixes for AppRestrictions sample." into nyc-mr1-dev
diff --git a/content/webview/PermissionRequest/Application/src/main/assets/sample.js b/content/webview/PermissionRequest/Application/src/main/assets/sample.js
index e2806a0..b9d2fdc 100644
--- a/content/webview/PermissionRequest/Application/src/main/assets/sample.js
+++ b/content/webview/PermissionRequest/Application/src/main/assets/sample.js
@@ -20,7 +20,7 @@
navigator.getUserMedia = navigator.getUserMedia || navigator.webkitGetUserMedia;
window.URL = window.URL || window.webkitURL;
- window.onload = function () {
+ document.addEventListener('DOMContentLoaded', function () {
var video = document.querySelector('#video'),
toggle = document.querySelector('#toggle'),
@@ -42,7 +42,13 @@
console.error('Error starting camera. Denied.');
});
} else {
- stream.stop();
+ if (stream.getTracks) {
+ stream.getTracks().forEach(function (track) {
+ track.stop();
+ });
+ } else if (stream.stop) {
+ stream.stop();
+ }
stream = null;
toggle.innerText = 'Start';
console.log('Stopped');
@@ -51,6 +57,6 @@
console.log('Page loaded');
- };
+ });
})();
diff --git a/content/webview/PermissionRequest/Application/src/main/java/com/example/android/permissionrequest/ConfirmationDialogFragment.java b/content/webview/PermissionRequest/Application/src/main/java/com/example/android/permissionrequest/ConfirmationDialogFragment.java
index 7dae56e..ca173b4 100644
--- a/content/webview/PermissionRequest/Application/src/main/java/com/example/android/permissionrequest/ConfirmationDialogFragment.java
+++ b/content/webview/PermissionRequest/Application/src/main/java/com/example/android/permissionrequest/ConfirmationDialogFragment.java
@@ -13,12 +13,14 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
+
package com.example.android.permissionrequest;
import android.app.AlertDialog;
import android.app.Dialog;
import android.content.DialogInterface;
import android.os.Bundle;
+import android.support.annotation.NonNull;
import android.support.v4.app.DialogFragment;
import android.text.TextUtils;
@@ -32,7 +34,7 @@
/**
* Creates a new instance of ConfirmationDialogFragment.
*
- * @param resources The list of resources requested by PermissionRequeste.
+ * @param resources The list of resources requested by PermissionRequest.
* @return A new instance.
*/
public static ConfirmationDialogFragment newInstance(String[] resources) {
@@ -43,21 +45,22 @@
return fragment;
}
+ @NonNull
@Override
public Dialog onCreateDialog(Bundle savedInstanceState) {
- String[] resources = getArguments().getStringArray(ARG_RESOURCES);
+ final String[] resources = getArguments().getStringArray(ARG_RESOURCES);
return new AlertDialog.Builder(getActivity())
.setMessage(getString(R.string.confirmation, TextUtils.join("\n", resources)))
.setNegativeButton(R.string.deny, new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
- ((Listener) getParentFragment()).onConfirmation(false);
+ ((Listener) getParentFragment()).onConfirmation(false, resources);
}
})
.setPositiveButton(R.string.allow, new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
- ((Listener) getParentFragment()).onConfirmation(true);
+ ((Listener) getParentFragment()).onConfirmation(true, resources);
}
})
.create();
@@ -66,14 +69,15 @@
/**
* Callback for the user's response.
*/
- public interface Listener {
+ interface Listener {
/**
- * Called when the PermissoinRequest is allowed or denied by the user.
+ * Called when the PermissionRequest is allowed or denied by the user.
*
- * @param allowed True if the user allowed the request.
+ * @param allowed True if the user allowed the request.
+ * @param resources The resources to be granted.
*/
- public void onConfirmation(boolean allowed);
+ void onConfirmation(boolean allowed, String[] resources);
}
}
diff --git a/content/webview/PermissionRequest/Application/src/main/java/com/example/android/permissionrequest/MessageDialogFragment.java b/content/webview/PermissionRequest/Application/src/main/java/com/example/android/permissionrequest/MessageDialogFragment.java
new file mode 100644
index 0000000..31d0bcb
--- /dev/null
+++ b/content/webview/PermissionRequest/Application/src/main/java/com/example/android/permissionrequest/MessageDialogFragment.java
@@ -0,0 +1,61 @@
+/*
+ * Copyright (C) 2016 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.example.android.permissionrequest;
+
+import android.app.AlertDialog;
+import android.app.Dialog;
+import android.content.DialogInterface;
+import android.os.Bundle;
+import android.support.annotation.NonNull;
+import android.support.annotation.StringRes;
+import android.support.v4.app.DialogFragment;
+
+/**
+ * Shows a dialog with a brief message.
+ */
+public class MessageDialogFragment extends DialogFragment {
+
+ private static final String ARG_MESSAGE_RES_ID = "message_res_id";
+
+ public static MessageDialogFragment newInstance(@StringRes int message) {
+ MessageDialogFragment fragment = new MessageDialogFragment();
+ Bundle args = new Bundle();
+ args.putInt(ARG_MESSAGE_RES_ID, message);
+ fragment.setArguments(args);
+ return fragment;
+ }
+
+ @NonNull
+ @Override
+ public Dialog onCreateDialog(Bundle savedInstanceState) {
+ return new AlertDialog.Builder(getContext())
+ .setMessage(getArguments().getInt(ARG_MESSAGE_RES_ID))
+ .setCancelable(false)
+ .setPositiveButton(android.R.string.ok, new DialogInterface.OnClickListener() {
+ @Override
+ public void onClick(DialogInterface dialog, int which) {
+ ((Listener) getParentFragment()).onOkClicked();
+ }
+ })
+ .create();
+ }
+
+ interface Listener {
+ void onOkClicked();
+ }
+
+}
diff --git a/content/webview/PermissionRequest/Application/src/main/java/com/example/android/permissionrequest/PermissionRequestFragment.java b/content/webview/PermissionRequest/Application/src/main/java/com/example/android/permissionrequest/PermissionRequestFragment.java
index 44f1d6e..418c90d 100644
--- a/content/webview/PermissionRequest/Application/src/main/java/com/example/android/permissionrequest/PermissionRequestFragment.java
+++ b/content/webview/PermissionRequest/Application/src/main/java/com/example/android/permissionrequest/PermissionRequestFragment.java
@@ -16,12 +16,15 @@
package com.example.android.permissionrequest;
+import android.Manifest;
import android.annotation.SuppressLint;
+import android.content.pm.PackageManager;
import android.os.Bundle;
import android.support.annotation.NonNull;
import android.support.annotation.Nullable;
import android.support.v4.app.DialogFragment;
import android.support.v4.app.Fragment;
+import android.support.v4.content.ContextCompat;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
@@ -37,12 +40,14 @@
* This fragment shows a {@link WebView} and loads a web app from the {@link SimpleWebServer}.
*/
public class PermissionRequestFragment extends Fragment
- implements ConfirmationDialogFragment.Listener {
+ implements ConfirmationDialogFragment.Listener, MessageDialogFragment.Listener {
private static final String TAG = PermissionRequestFragment.class.getSimpleName();
private static final String FRAGMENT_DIALOG = "dialog";
+ private static final int REQUEST_CAMERA_PERMISSION = 1;
+
/**
* We use this web server to serve HTML files in the assets folder. This is because we cannot
* use the JavaScript method "getUserMedia" from "file:///android_assets/..." URLs.
@@ -67,7 +72,7 @@
@Override
public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container,
- @Nullable Bundle savedInstanceState) {
+ @Nullable Bundle savedInstanceState) {
return inflater.inflate(R.layout.fragment_permission_request, container, false);
}
@@ -85,7 +90,14 @@
final int port = 8080;
mWebServer = new SimpleWebServer(port, getResources().getAssets());
mWebServer.start();
- mWebView.loadUrl("http://localhost:" + port + "/sample.html");
+ // This is for runtime permission on Marshmallow and above; It is not directly related to
+ // PermissionRequest API.
+ if (ContextCompat.checkSelfPermission(getActivity(), Manifest.permission.CAMERA)
+ != PackageManager.PERMISSION_GRANTED) {
+ requestCameraPermission();
+ } else {
+ mWebView.loadUrl("http://localhost:" + port + "/sample.html");
+ }
}
@Override
@@ -94,6 +106,32 @@
super.onPause();
}
+ @Override
+ public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions,
+ @NonNull int[] grantResults) {
+ // This is for runtime permission on Marshmallow and above; It is not directly related to
+ // PermissionRequest API.
+ if (requestCode == REQUEST_CAMERA_PERMISSION) {
+ if (permissions.length != 1 || grantResults.length != 1 ||
+ grantResults[0] != PackageManager.PERMISSION_GRANTED) {
+ Log.e(TAG, "Camera permission not granted.");
+ } else if (mWebView != null && mWebServer != null) {
+ mWebView.loadUrl("http://localhost:" + mWebServer.getPort() + "/sample.html");
+ }
+ } else {
+ super.onRequestPermissionsResult(requestCode, permissions, grantResults);
+ }
+ }
+
+ private void requestCameraPermission() {
+ if (shouldShowRequestPermissionRationale(Manifest.permission.CAMERA)) {
+ MessageDialogFragment.newInstance(R.string.permission_message)
+ .show(getChildFragmentManager(), FRAGMENT_DIALOG);
+ } else {
+ requestPermissions(new String[]{Manifest.permission.CAMERA}, REQUEST_CAMERA_PERMISSION);
+ }
+ }
+
@SuppressLint("SetJavaScriptEnabled")
private static void configureWebSettings(WebSettings settings) {
settings.setJavaScriptEnabled(true);
@@ -110,8 +148,16 @@
public void onPermissionRequest(PermissionRequest request) {
Log.i(TAG, "onPermissionRequest");
mPermissionRequest = request;
- ConfirmationDialogFragment.newInstance(request.getResources())
- .show(getChildFragmentManager(), FRAGMENT_DIALOG);
+ final String[] requestedResources = request.getResources();
+ for (String r : requestedResources) {
+ if (r.equals(PermissionRequest.RESOURCE_VIDEO_CAPTURE)) {
+ // In this sample, we only accept video capture request.
+ ConfirmationDialogFragment
+ .newInstance(new String[]{PermissionRequest.RESOURCE_VIDEO_CAPTURE})
+ .show(getChildFragmentManager(), FRAGMENT_DIALOG);
+ break;
+ }
+ }
}
// This method is called when the permission request is canceled by the web content.
@@ -155,9 +201,14 @@
};
@Override
- public void onConfirmation(boolean allowed) {
+ public void onOkClicked() {
+ requestPermissions(new String[]{Manifest.permission.CAMERA}, REQUEST_CAMERA_PERMISSION);
+ }
+
+ @Override
+ public void onConfirmation(boolean allowed, String[] resources) {
if (allowed) {
- mPermissionRequest.grant(mPermissionRequest.getResources());
+ mPermissionRequest.grant(resources);
Log.d(TAG, "Permission granted.");
} else {
mPermissionRequest.deny();
@@ -174,7 +225,7 @@
* For testing.
*/
public interface ConsoleMonitor {
- public void onConsoleMessage(ConsoleMessage message);
+ void onConsoleMessage(ConsoleMessage message);
}
}
diff --git a/content/webview/PermissionRequest/Application/src/main/java/com/example/android/permissionrequest/SimpleWebServer.java b/content/webview/PermissionRequest/Application/src/main/java/com/example/android/permissionrequest/SimpleWebServer.java
index 36b7c46..b02275a 100644
--- a/content/webview/PermissionRequest/Application/src/main/java/com/example/android/permissionrequest/SimpleWebServer.java
+++ b/content/webview/PermissionRequest/Application/src/main/java/com/example/android/permissionrequest/SimpleWebServer.java
@@ -90,6 +90,10 @@
}
}
+ public int getPort() {
+ return mPort;
+ }
+
@Override
public void run() {
try {
diff --git a/content/webview/PermissionRequest/Application/src/main/res/values/strings.xml b/content/webview/PermissionRequest/Application/src/main/res/values/strings.xml
index c3e5574..2488766 100644
--- a/content/webview/PermissionRequest/Application/src/main/res/values/strings.xml
+++ b/content/webview/PermissionRequest/Application/src/main/res/values/strings.xml
@@ -15,6 +15,7 @@
limitations under the License.
-->
<resources>
+ <string name="permission_message">This sample app uses camera.</string>
<string name="confirmation">This web page wants to use following resources:\n\n%s</string>
<string name="allow">Allow</string>
<string name="deny">Deny</string>
diff --git a/security/FingerprintDialog/Application/src/main/AndroidManifest.xml b/security/FingerprintDialog/Application/src/main/AndroidManifest.xml
index 77d9949..337f641 100644
--- a/security/FingerprintDialog/Application/src/main/AndroidManifest.xml
+++ b/security/FingerprintDialog/Application/src/main/AndroidManifest.xml
@@ -1,5 +1,4 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
+<?xml version="1.0" encoding="UTF-8"?><!--
Copyright 2015 The Android Open Source Project
Licensed under the Apache License, Version 2.0 (the "License");
@@ -14,24 +13,28 @@
See the License for the specific language governing permissions and
limitations under the License.
-->
-<manifest xmlns:android="http://schemas.android.com/apk/res/android"
- package="com.example.android.fingerprintdialog"
- android:versionCode="1"
- android:versionName="1.0">
+<manifest package="com.example.android.fingerprintdialog"
+ xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:tools="http://schemas.android.com/tools"
+ android:versionCode="1"
+ android:versionName="1.0">
- <uses-permission android:name="android.permission.USE_FINGERPRINT"/>
+ <uses-permission android:name="android.permission.USE_FINGERPRINT" />
<application
- android:allowBackup="true"
- android:label="@string/application_name"
- android:icon="@mipmap/ic_launcher"
- android:theme="@style/Theme.AppCompat.Light">
+ android:allowBackup="true"
+ android:icon="@mipmap/ic_launcher"
+ android:label="@string/application_name"
+ android:supportsRtl="true"
+ android:theme="@style/Theme.AppCompat.Light"
+ tools:ignore="GoogleAppIndexingWarning">
- <activity android:name=".MainActivity"
- android:label="@string/application_name">
+ <activity
+ android:name=".MainActivity"
+ android:label="@string/application_name">
<intent-filter>
- <action android:name="android.intent.action.MAIN"/>
- <category android:name="android.intent.category.LAUNCHER"/>
+ <action android:name="android.intent.action.MAIN" />
+ <category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
diff --git a/security/FingerprintDialog/Application/src/main/java/com/example/android/fingerprintdialog/FingerprintAuthenticationDialogFragment.java b/security/FingerprintDialog/Application/src/main/java/com/example/android/fingerprintdialog/FingerprintAuthenticationDialogFragment.java
index 0537573..9f4a684 100644
--- a/security/FingerprintDialog/Application/src/main/java/com/example/android/fingerprintdialog/FingerprintAuthenticationDialogFragment.java
+++ b/security/FingerprintDialog/Application/src/main/java/com/example/android/fingerprintdialog/FingerprintAuthenticationDialogFragment.java
@@ -16,8 +16,8 @@
package com.example.android.fingerprintdialog;
-import android.app.Activity;
import android.app.DialogFragment;
+import android.content.Context;
import android.content.SharedPreferences;
import android.hardware.fingerprint.FingerprintManager;
import android.os.Bundle;
@@ -134,11 +134,11 @@
}
@Override
- public void onAttach(Activity activity) {
- super.onAttach(activity);
- mActivity = (MainActivity) activity;
- mInputMethodManager = mActivity.getSystemService(InputMethodManager.class);
- mSharedPreferences = PreferenceManager.getDefaultSharedPreferences(mActivity);
+ public void onAttach(Context context) {
+ super.onAttach(context);
+ mActivity = (MainActivity) getActivity();
+ mInputMethodManager = context.getSystemService(InputMethodManager.class);
+ mSharedPreferences = PreferenceManager.getDefaultSharedPreferences(context);
}
/**
diff --git a/security/FingerprintDialog/Application/src/main/res/layout/activity_main.xml b/security/FingerprintDialog/Application/src/main/res/layout/activity_main.xml
index 075899f..f0a596f 100644
--- a/security/FingerprintDialog/Application/src/main/res/layout/activity_main.xml
+++ b/security/FingerprintDialog/Application/src/main/res/layout/activity_main.xml
@@ -31,7 +31,8 @@
android:layout_marginBottom="32dp"
android:layout_gravity="center_horizontal"
android:scaleType="fitCenter"
- android:src="@drawable/android_robot"/>
+ android:src="@drawable/android_robot"
+ android:contentDescription="@string/description_bugdroid_icon"/>
<LinearLayout
android:layout_width="match_parent"
diff --git a/security/FingerprintDialog/Application/src/main/res/layout/fingerprint_dialog_content.xml b/security/FingerprintDialog/Application/src/main/res/layout/fingerprint_dialog_content.xml
index 3929eba..5bb65b2 100644
--- a/security/FingerprintDialog/Application/src/main/res/layout/fingerprint_dialog_content.xml
+++ b/security/FingerprintDialog/Application/src/main/res/layout/fingerprint_dialog_content.xml
@@ -41,7 +41,8 @@
android:layout_alignParentStart="true"
android:layout_below="@+id/fingerprint_description"
android:layout_marginTop="20dp"
- android:src="@drawable/ic_fp_40px" />
+ android:src="@drawable/ic_fp_40px"
+ android:contentDescription="@string/description_fingerprint_icon"/>
<TextView
android:id="@+id/fingerprint_status"
diff --git a/security/FingerprintDialog/Application/src/main/res/menu/menu_main.xml b/security/FingerprintDialog/Application/src/main/res/menu/menu_main.xml
index 73f5e89..6a6ba0f 100644
--- a/security/FingerprintDialog/Application/src/main/res/menu/menu_main.xml
+++ b/security/FingerprintDialog/Application/src/main/res/menu/menu_main.xml
@@ -1,5 +1,4 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
+<?xml version="1.0" encoding="utf-8"?><!--
~ Copyright (C) 2015 The Android Open Source Project
~
~ Licensed under the Apache License, Version 2.0 (the "License");
@@ -15,7 +14,12 @@
~ limitations under the License
-->
<menu xmlns:android="http://schemas.android.com/apk/res/android"
- xmlns:tools="http://schemas.android.com/tools" tools:context=".MainActivity">
- <item android:id="@+id/action_settings" android:title="@string/action_settings"
- android:orderInCategory="100" android:showAsAction="never" />
+ xmlns:app="http://schemas.android.com/apk/res-auto"
+ xmlns:tools="http://schemas.android.com/tools"
+ tools:context=".MainActivity">
+ <item
+ android:id="@+id/action_settings"
+ android:orderInCategory="100"
+ android:title="@string/action_settings"
+ app:showAsAction="never" />
</menu>
diff --git a/security/FingerprintDialog/Application/src/main/res/values/strings.xml b/security/FingerprintDialog/Application/src/main/res/values/strings.xml
index 86f200c..b085606 100644
--- a/security/FingerprintDialog/Application/src/main/res/values/strings.xml
+++ b/security/FingerprintDialog/Application/src/main/res/values/strings.xml
@@ -25,7 +25,7 @@
<string name="cancel">Cancel</string>
<string name="use_password">Use password</string>
<string name="sign_in">Sign in</string>
- <string name="ok">Ok</string>
+ <string name="ok">OK</string>
<string name="password">Password</string>
<string name="fingerprint_description">Confirm fingerprint to continue</string>
<string name="fingerprint_hint">Touch sensor</string>
@@ -45,4 +45,6 @@
<string name="use_fingerprint_in_future">Use fingerprint in the future</string>
<string name="use_fingerprint_to_authenticate_title">Use fingerprint to authenticate</string>
<string name="use_fingerprint_to_authenticate_key" >use_fingerprint_to_authenticate_key</string>
+ <string name="description_bugdroid_icon">Android bugdroid image</string>
+ <string name="description_fingerprint_icon">Fingerprint icon</string>
</resources>
diff --git a/wearable/wear/WearVerifyRemoteApp/Application/src/main/java/com/example/android/wearable/wear/wearverifyremoteapp/MainMobileActivity.java b/wearable/wear/WearVerifyRemoteApp/Application/src/main/java/com/example/android/wearable/wear/wearverifyremoteapp/MainMobileActivity.java
index 0d06ed5..ed15119 100644
--- a/wearable/wear/WearVerifyRemoteApp/Application/src/main/java/com/example/android/wearable/wear/wearverifyremoteapp/MainMobileActivity.java
+++ b/wearable/wear/WearVerifyRemoteApp/Application/src/main/java/com/example/android/wearable/wear/wearverifyremoteapp/MainMobileActivity.java
@@ -99,15 +99,16 @@
if (resultCode == RemoteIntent.RESULT_OK) {
Toast toast = Toast.makeText(
getApplicationContext(),
- "Successfully sent to device",
+ "Play Store Request to Wear device successful.",
Toast.LENGTH_SHORT);
toast.show();
} else if (resultCode == RemoteIntent.RESULT_FAILED) {
Toast toast = Toast.makeText(
getApplicationContext(),
- "Failed to send to device.",
- Toast.LENGTH_SHORT);
+ "Play Store Request Failed. Wear device(s) may not support Play Store, "
+ + " that is, the Wear device may be version 1.0.",
+ Toast.LENGTH_LONG);
toast.show();
} else {
@@ -188,7 +189,7 @@
// Initial request for devices with our capability, aka, our Wear app installed.
findWearDevicesWithApp();
- // Initial request for devices all Wear devices connected (with or without our capability).
+ // Initial request for all Wear devices connected (with or without our capability).
// Additional Note: Because there isn't a listener for ALL Nodes added/removed from network
// that isn't deprecated, we simply update the full list when the Google API Client is
// connected and when capability changes come through in the onCapabilityChanged() method.
diff --git a/wearable/wear/WearVerifyRemoteApp/Wearable/src/main/java/com/example/android/wearable/wear/wearverifyremoteapp/MainWearActivity.java b/wearable/wear/WearVerifyRemoteApp/Wearable/src/main/java/com/example/android/wearable/wear/wearverifyremoteapp/MainWearActivity.java
index 260ed44..31882b0 100644
--- a/wearable/wear/WearVerifyRemoteApp/Wearable/src/main/java/com/example/android/wearable/wear/wearverifyremoteapp/MainWearActivity.java
+++ b/wearable/wear/WearVerifyRemoteApp/Wearable/src/main/java/com/example/android/wearable/wear/wearverifyremoteapp/MainWearActivity.java
@@ -72,12 +72,15 @@
// IMPORTANT NOTE: This should be named differently than your Wear app's capability.
private static final String CAPABILITY_PHONE_APP = "verify_remote_example_phone_app";
-
- // Links to mobile app for Android (Play Store).
+ // Links to install mobile app for both Android (Play Store) and iOS.
// TODO: Replace with your links/packages.
private static final String PLAY_STORE_APP_URI =
"market://details?id=com.example.android.wearable.wear.wearverifyremoteapp";
+ // TODO: Replace with your links/packages.
+ private static final String APP_STORE_APP_URI =
+ "https://itunes.apple.com/us/app/android-wear/id986496028?mt=8";
+
// Result from sending RemoteIntent to phone to open app in play/app store.
private final ResultReceiver mResultReceiver = new ResultReceiver(new Handler()) {
@Override
@@ -263,6 +266,17 @@
// Assume iPhone (iOS device) or Android without Play Store (not supported right now).
case PlayStoreAvailability.PLAY_STORE_ON_PHONE_UNAVAILABLE:
Log.d(TAG, "\tPLAY_STORE_ON_PHONE_UNAVAILABLE");
+
+ // Create Remote Intent to open App Store listing of app on iPhone.
+ Intent intentIOS =
+ new Intent(Intent.ACTION_VIEW)
+ .addCategory(Intent.CATEGORY_BROWSABLE)
+ .setData(Uri.parse(APP_STORE_APP_URI));
+
+ RemoteIntent.startRemoteActivity(
+ getApplicationContext(),
+ intentIOS,
+ mResultReceiver);
break;
case PlayStoreAvailability.PLAY_STORE_ON_PHONE_ERROR_UNKNOWN:
diff --git a/wearable/wear/XYZTouristAttractions/template-params.xml b/wearable/wear/XYZTouristAttractions/template-params.xml
index 35de838..bf2a37d 100644
--- a/wearable/wear/XYZTouristAttractions/template-params.xml
+++ b/wearable/wear/XYZTouristAttractions/template-params.xml
@@ -27,17 +27,20 @@
</wearable>
<dependency>com.google.android.gms:play-services-location</dependency>
+
<dependency>com.google.maps.android:android-maps-utils:0.3.4</dependency>
<dependency>com.github.bumptech.glide:glide:3.6.1</dependency>
<dependency>com.android.support:appcompat-v7:24.0.0</dependency>
<dependency>com.android.support:recyclerview-v7:24.0.0</dependency>
<dependency>com.android.support:design:24.0.0</dependency>
- <dependency_wearable>com.google.android.gms:play-services-location</dependency_wearable>
+ <dependency_wearable>com.google.android.gms:play-services-maps</dependency_wearable>
<dependency_shared>com.android.support:support-v13:23.0.0</dependency_shared>
<dependency_shared>com.google.android.gms:play-services-wearable</dependency_shared>
- <dependency_shared>com.google.android.gms:play-services-location</dependency_shared>
+ <dependency_shared>com.google.android.gms:play-services-maps</dependency_shared>
<dependency_shared>com.google.maps.android:android-maps-utils:0.3.4</dependency_shared>
+
+
<strings>
<intro>
<![CDATA[