Merge "Use support lib shortcut manager in sample apps" into oc-dev

This commit is contained in:
TreeHugger Robot
2017-06-06 16:18:20 +00:00
committed by Android (Google) Code Review
7 changed files with 45 additions and 10 deletions

View File

@@ -23,6 +23,8 @@ include $(CLEAR_VARS)
LOCAL_PACKAGE_NAME := ShortcutDemo LOCAL_PACKAGE_NAME := ShortcutDemo
LOCAL_STATIC_JAVA_LIBRARIES = android-support-v4
LOCAL_MODULE_TAGS := samples tests LOCAL_MODULE_TAGS := samples tests
LOCAL_AAPT_FLAGS += --rename-manifest-package com.example.android.pm.shortcutdemo LOCAL_AAPT_FLAGS += --rename-manifest-package com.example.android.pm.shortcutdemo
@@ -43,6 +45,8 @@ include $(CLEAR_VARS)
LOCAL_PACKAGE_NAME := ShortcutDemo2 LOCAL_PACKAGE_NAME := ShortcutDemo2
LOCAL_STATIC_JAVA_LIBRARIES = android-support-v4
LOCAL_MODULE_TAGS := samples tests LOCAL_MODULE_TAGS := samples tests
LOCAL_AAPT_FLAGS += --rename-manifest-package com.example.android.pm.shortcutdemo2 LOCAL_AAPT_FLAGS += --rename-manifest-package com.example.android.pm.shortcutdemo2

View File

@@ -17,7 +17,7 @@
<manifest xmlns:android="http://schemas.android.com/apk/res/android" <manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.android.pm.shortcutdemo"> package="com.example.android.pm.shortcutdemo">
<uses-sdk android:minSdkVersion="24" /> <uses-sdk android:minSdkVersion="25" android:targetSdkVersion="26" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" /> <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />

View File

@@ -31,6 +31,9 @@ import android.graphics.BitmapFactory;
import android.graphics.drawable.Icon; import android.graphics.drawable.Icon;
import android.net.Uri; import android.net.Uri;
import android.os.Bundle; import android.os.Bundle;
import android.support.v4.content.pm.ShortcutInfoCompat;
import android.support.v4.content.pm.ShortcutManagerCompat;
import android.support.v4.graphics.drawable.IconCompat;
import android.text.format.Time; import android.text.format.Time;
import android.util.ArrayMap; import android.util.ArrayMap;
import android.util.Log; import android.util.Log;
@@ -198,6 +201,21 @@ public class ShortcutPublisher extends Activity {
return b; return b;
} }
public static ShortcutInfoCompat.Builder addRandomIntents(Context context,
ShortcutInfoCompat.Builder b) {
final int i = sRandom.nextInt(sIntentList.size());
b.setShortLabel(sIntentList.get(i).first);
b.setIntent(new Intent(Intent.ACTION_VIEW, Uri.parse(sIntentList.get(i).second)));
if (sRandom.nextBoolean()) {
b.setIcon(IconCompat.createWithResource(context, R.drawable.icon2));
} else {
b.setIcon(IconCompat.createWithBitmap(
BitmapFactory.decodeResource(context.getResources(), R.drawable.icon_large_2)));
}
return b;
}
public void onPublishPressed(View view) { public void onPublishPressed(View view) {
dumpCurrentShortcuts(); dumpCurrentShortcuts();
final Icon icon2 = Icon.createWithBitmap(BitmapFactory.decodeResource(getResources(), final Icon icon2 = Icon.createWithBitmap(BitmapFactory.decodeResource(getResources(),
@@ -305,12 +323,12 @@ public class ShortcutPublisher extends Activity {
} }
public static void requestPinShortcut(Context context) { public static void requestPinShortcut(Context context) {
if (!context.getSystemService(ShortcutManager.class).isRequestPinShortcutSupported()) { if (!ShortcutManagerCompat.isRequestPinShortcutSupported(context)) {
showToast(context, "requestPinShortcut() is not supported by launcher"); showToast(context, "requestPinShortcut() is not supported by launcher");
return; return;
} }
final ShortcutInfo si = addRandomIntents( final ShortcutInfoCompat si = addRandomIntents(
context, new ShortcutInfo.Builder(context, context, new ShortcutInfoCompat.Builder(context,
"shortcut-" + System.currentTimeMillis())) "shortcut-" + System.currentTimeMillis()))
.build(); .build();
final PendingIntent resultIntent = PendingIntent.getBroadcast(context, 0, final PendingIntent resultIntent = PendingIntent.getBroadcast(context, 0,
@@ -318,7 +336,7 @@ public class ShortcutPublisher extends Activity {
PendingIntent.FLAG_UPDATE_CURRENT); PendingIntent.FLAG_UPDATE_CURRENT);
ShortcutPublisher.callApi(context, () -> { ShortcutPublisher.callApi(context, () -> {
context.getSystemService(ShortcutManager.class).requestPinShortcut( ShortcutManagerCompat.requestPinShortcut(context,
si, resultIntent.getIntentSender()); si, resultIntent.getIntentSender());
return true; return true;
}); });

View File

@@ -28,6 +28,8 @@ LOCAL_SRC_FILES := $(call all-java-files-under, src)
LOCAL_RESOURCE_DIR := $(LOCAL_PATH)/res LOCAL_RESOURCE_DIR := $(LOCAL_PATH)/res
LOCAL_STATIC_JAVA_LIBRARIES = android-support-v4
LOCAL_SDK_VERSION := current LOCAL_SDK_VERSION := current
include $(BUILD_PACKAGE) include $(BUILD_PACKAGE)

View File

@@ -17,7 +17,7 @@
<manifest xmlns:android="http://schemas.android.com/apk/res/android" <manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.android.shortcutsample"> package="com.example.android.shortcutsample">
<uses-sdk android:minSdkVersion="25" /> <uses-sdk android:minSdkVersion="25" android:targetSdkVersion="26" />
<uses-permission android:name="android.permission.INTERNET" /> <uses-permission android:name="android.permission.INTERNET" />
@@ -42,6 +42,12 @@
<intent-filter> <intent-filter>
<action android:name="android.intent.action.LOCALE_CHANGED" /> <action android:name="android.intent.action.LOCALE_CHANGED" />
</intent-filter> </intent-filter>
<intent-filter>
<action android:name="android.intent.action.BOOT_COMPLETED" />
</intent-filter>
<intent-filter>
<action android:name="android.intent.action.MY_PACKAGE_REPLACED" />
</intent-filter>
</receiver> </receiver>
</application> </application>
</manifest> </manifest>

View File

@@ -24,6 +24,7 @@ import android.content.pm.ShortcutInfo;
import android.content.pm.ShortcutManager; import android.content.pm.ShortcutManager;
import android.os.AsyncTask; import android.os.AsyncTask;
import android.os.Bundle; import android.os.Bundle;
import android.support.v4.content.pm.ShortcutManagerCompat;
import android.util.ArraySet; import android.util.ArraySet;
import android.util.Log; import android.util.Log;
import android.view.LayoutInflater; import android.view.LayoutInflater;
@@ -88,7 +89,8 @@ public class Main extends ListActivity implements OnClickListener {
sVisibleInstances.add(this); sVisibleInstances.add(this);
} }
findViewById(R.id.request_new_pin_shortcut).setVisibility( findViewById(R.id.request_new_pin_shortcut).setVisibility(
mShortcutManager.isRequestPinShortcutSupported() ? View.VISIBLE : View.GONE); ShortcutManagerCompat.isRequestPinShortcutSupported(this)
? View.VISIBLE : View.GONE);
} }
@Override @Override
@@ -309,7 +311,8 @@ public class Main extends ListActivity implements OnClickListener {
remove.setVisibility(shortcut.isImmutable() ? View.GONE : View.VISIBLE); remove.setVisibility(shortcut.isImmutable() ? View.GONE : View.VISIBLE);
disable.setVisibility(shortcut.isImmutable() ? View.GONE : View.VISIBLE); disable.setVisibility(shortcut.isImmutable() ? View.GONE : View.VISIBLE);
requestPin.setVisibility( requestPin.setVisibility(
mShortcutManager.isRequestPinShortcutSupported() ? View.VISIBLE : View.GONE); ShortcutManagerCompat.isRequestPinShortcutSupported(mContext)
? View.VISIBLE : View.GONE);
remove.setOnClickListener(Main.this); remove.setOnClickListener(Main.this);
disable.setOnClickListener(Main.this); disable.setOnClickListener(Main.this);

View File

@@ -25,6 +25,8 @@ import android.graphics.drawable.Icon;
import android.net.Uri; import android.net.Uri;
import android.os.AsyncTask; import android.os.AsyncTask;
import android.os.PersistableBundle; import android.os.PersistableBundle;
import android.support.v4.content.pm.ShortcutInfoCompat;
import android.support.v4.content.pm.ShortcutManagerCompat;
import android.util.Log; import android.util.Log;
import java.io.BufferedInputStream; import java.io.BufferedInputStream;
@@ -227,8 +229,8 @@ public class ShortcutHelper {
} }
public void requestPinShortcut(String id) { public void requestPinShortcut(String id) {
mShortcutManager.requestPinShortcut( ShortcutManagerCompat.requestPinShortcut(mContext,
new ShortcutInfo.Builder(mContext, id).build(), new ShortcutInfoCompat.Builder(mContext, id).build(),
MyReceiver.getPinRequestAcceptedIntent(mContext).getIntentSender()); MyReceiver.getPinRequestAcceptedIntent(mContext).getIntentSender());
} }