version:5.0
fix: update:增加app快捷方式
This commit is contained in:
169
app/src/main/java/com/uiuios/aios/activity/AddItemActivity.java
Normal file
169
app/src/main/java/com/uiuios/aios/activity/AddItemActivity.java
Normal file
@@ -0,0 +1,169 @@
|
||||
package com.uiuios.aios.activity;
|
||||
|
||||
import android.appwidget.AppWidgetManager;
|
||||
import android.content.ComponentName;
|
||||
import android.content.Intent;
|
||||
import android.content.pm.LauncherApps;
|
||||
import android.content.pm.PackageManager;
|
||||
import android.content.pm.ShortcutInfo;
|
||||
import android.content.res.Resources;
|
||||
import android.graphics.drawable.Drawable;
|
||||
import android.os.Build;
|
||||
import android.os.Bundle;
|
||||
import android.os.Parcelable;
|
||||
import android.util.Log;
|
||||
import android.view.View;
|
||||
import android.widget.ImageView;
|
||||
import android.widget.RemoteViews;
|
||||
import android.widget.TextView;
|
||||
|
||||
import com.uiuios.aios.R;
|
||||
import com.uiuios.aios.base.BaseActivity;
|
||||
import com.uiuios.aios.shortcut.ShortcutPkgInfo;
|
||||
import com.uiuios.aios.shortcut.ShortcutUtils;
|
||||
import com.uiuios.aios.utils.ToastUtil;
|
||||
|
||||
import butterknife.BindView;
|
||||
import butterknife.ButterKnife;
|
||||
|
||||
public class AddItemActivity extends BaseActivity {
|
||||
private static final String TAG = AddItemActivity.class.getSimpleName();
|
||||
|
||||
@BindView(R.id.tv_app_name)
|
||||
TextView tv_app_name;
|
||||
@BindView(R.id.iv_icon)
|
||||
ImageView iv_icon;
|
||||
@BindView(R.id.tv_add)
|
||||
TextView tv_add;
|
||||
@BindView(R.id.tv_cancel)
|
||||
TextView tv_cancel;
|
||||
|
||||
|
||||
int mIconDpi = 1000;
|
||||
|
||||
private LauncherApps.PinItemRequest mRequest;
|
||||
private ShortcutInfo mInfo;
|
||||
private String mId;
|
||||
private String mPackageName;
|
||||
private String mTitle;
|
||||
private ComponentName mComponentName;
|
||||
|
||||
private Bundle mWidgetOptions;
|
||||
private AppWidgetManager mAppWidgetManager;
|
||||
private int mPendingBindWidgetId;
|
||||
|
||||
private ShortcutPkgInfo mShortcutPkgInfo;
|
||||
|
||||
/**
|
||||
* 设置布局
|
||||
*/
|
||||
@Override
|
||||
public int getLayoutId() {
|
||||
return R.layout.add_item_confirmation_activity;
|
||||
}
|
||||
|
||||
/**
|
||||
* 初始化视图
|
||||
*/
|
||||
@Override
|
||||
public void initView() {
|
||||
ButterKnife.bind(this);
|
||||
tv_cancel.setOnClickListener(new View.OnClickListener() {
|
||||
@Override
|
||||
public void onClick(View v) {
|
||||
finish();
|
||||
}
|
||||
});
|
||||
tv_add.setOnClickListener(new View.OnClickListener() {
|
||||
|
||||
@Override
|
||||
public void onClick(View v) {
|
||||
if (mShortcutPkgInfo == null) {
|
||||
ToastUtil.show("快捷方式信息为空");
|
||||
return;
|
||||
}
|
||||
if (ShortcutUtils.getInstance().addShortcut(mShortcutPkgInfo)) {
|
||||
mRequest.accept(mWidgetOptions);
|
||||
mWidgetOptions.putInt(AppWidgetManager.EXTRA_APPWIDGET_ID, mPendingBindWidgetId);
|
||||
boolean success = mAppWidgetManager.bindAppWidgetIdIfAllowed(mPendingBindWidgetId, mComponentName, mWidgetOptions);
|
||||
Log.e(TAG, "onClick: success + " + success);
|
||||
finish();
|
||||
} else {
|
||||
ToastUtil.show("添加失败");
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
/**
|
||||
* 初始化数据
|
||||
*/
|
||||
@Override
|
||||
public void initData() {
|
||||
mAppWidgetManager = AppWidgetManager.getInstance(AddItemActivity.this);
|
||||
mPendingBindWidgetId = AppWidgetManager.INVALID_APPWIDGET_ID;
|
||||
mWidgetOptions = new Bundle();
|
||||
mRequest = getPinItemRequest(getIntent());
|
||||
if (mRequest == null) {
|
||||
finish();
|
||||
return;
|
||||
}
|
||||
mInfo = mRequest.getShortcutInfo();
|
||||
if (mInfo == null) {
|
||||
finish();
|
||||
return;
|
||||
}
|
||||
if (mRequest.getRequestType() == LauncherApps.PinItemRequest.REQUEST_TYPE_SHORTCUT) {
|
||||
// mAppWidgetProviderInfo = mRequest.getAppWidgetProviderInfo(AddItemActivity.this);
|
||||
mId = mInfo.getId();
|
||||
mPackageName = mInfo.getPackage();
|
||||
mTitle = mInfo.getShortLabel().toString();
|
||||
tv_app_name.setText(mTitle);
|
||||
Drawable d = getSystemService(LauncherApps.class).getShortcutIconDrawable(mInfo, mIconDpi);
|
||||
iv_icon.setImageDrawable(d);
|
||||
mComponentName = mInfo.getActivity();
|
||||
// Drawable icon = getFullResIcon(mAppWidgetProviderInfo.provider.getPackageName(), mAppWidgetProviderInfo.icon);
|
||||
// RemoteViews remoteViews = getPreview(mRequest);
|
||||
mShortcutPkgInfo = new ShortcutPkgInfo(mId, mTitle, mPackageName, mComponentName, d);
|
||||
}
|
||||
}
|
||||
|
||||
public static LauncherApps.PinItemRequest getPinItemRequest(Intent intent) {
|
||||
Parcelable extra = intent.getParcelableExtra(LauncherApps.EXTRA_PIN_ITEM_REQUEST);
|
||||
return extra instanceof LauncherApps.PinItemRequest ? (LauncherApps.PinItemRequest) extra : null;
|
||||
}
|
||||
|
||||
public static RemoteViews getPreview(LauncherApps.PinItemRequest request) {
|
||||
Bundle extras = request.getExtras();
|
||||
if (extras != null &&
|
||||
extras.get(AppWidgetManager.EXTRA_APPWIDGET_PREVIEW) instanceof RemoteViews) {
|
||||
return (RemoteViews) extras.get(AppWidgetManager.EXTRA_APPWIDGET_PREVIEW);
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
public Drawable getFullResIcon(String packageName, int iconId) {
|
||||
try {
|
||||
return getFullResIcon(getPackageManager().getResourcesForApplication(packageName), iconId);
|
||||
} catch (PackageManager.NameNotFoundException e) {
|
||||
}
|
||||
return getFullResDefaultActivityIcon(mIconDpi);
|
||||
}
|
||||
|
||||
private Drawable getFullResIcon(Resources resources, int iconId) {
|
||||
if (resources != null && iconId != 0) {
|
||||
try {
|
||||
return resources.getDrawableForDensity(iconId, mIconDpi);
|
||||
} catch (Resources.NotFoundException e) {
|
||||
}
|
||||
}
|
||||
return getFullResDefaultActivityIcon(mIconDpi);
|
||||
}
|
||||
|
||||
public static Drawable getFullResDefaultActivityIcon(int iconDpi) {
|
||||
return Resources.getSystem().getDrawableForDensity(
|
||||
Build.VERSION.SDK_INT >= Build.VERSION_CODES.O
|
||||
? android.R.drawable.sym_def_app_icon : android.R.mipmap.sym_def_app_icon,
|
||||
iconDpi);
|
||||
}
|
||||
}
|
||||
@@ -1,5 +1,11 @@
|
||||
package com.uiuios.aios.activity.main;
|
||||
|
||||
import android.content.Intent;
|
||||
import android.os.Bundle;
|
||||
import android.util.Log;
|
||||
|
||||
import androidx.annotation.Nullable;
|
||||
|
||||
import com.uiuios.aios.R;
|
||||
|
||||
public class MainActivity extends BaseMainActivity {
|
||||
@@ -9,4 +15,18 @@ public class MainActivity extends BaseMainActivity {
|
||||
public int getLayoutId() {
|
||||
return R.layout.activity_main;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void onCreate(@Nullable Bundle savedInstanceState) {
|
||||
super.onCreate(savedInstanceState);
|
||||
Log.e(TAG, "onCreate: ");
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void onNewIntent(Intent intent) {
|
||||
super.onNewIntent(intent);
|
||||
Log.e(TAG, "onNewIntent: getAction = " + intent.getAction());
|
||||
Log.e(TAG, "onNewIntent: getCategories = " + intent.getCategories());
|
||||
Log.e(TAG, "onNewIntent: getFlags = " + intent.getFlags());
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user