version:5.0

fix:
update:增加app快捷方式
This commit is contained in:
2024-04-12 10:33:20 +08:00
parent 5e9b850d6b
commit 6fcb68d76e
20 changed files with 1164 additions and 105 deletions

View 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);
}
}

View File

@@ -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());
}
}