Compare commits
	
		
			3 Commits
		
	
	
		
			ea65810e7d
			...
			numtable-v
		
	
	| Author | SHA1 | Date | |
|---|---|---|---|
| 
						 | 
					3e7722e2c0 | ||
| 
						 | 
					a1707e73b5 | ||
| 
						 | 
					9dcbaa0d75 | 
@@ -1,8 +1,8 @@
 | 
				
			|||||||
#Created by .winboll/winboll_app_build.gradle
 | 
					#Created by .winboll/winboll_app_build.gradle
 | 
				
			||||||
#Sun Jun 08 21:21:11 HKT 2025
 | 
					#Thu Jul 24 10:16:27 HKT 2025
 | 
				
			||||||
stageCount=1
 | 
					stageCount=2
 | 
				
			||||||
libraryProject=
 | 
					libraryProject=
 | 
				
			||||||
baseVersion=15.1
 | 
					baseVersion=15.1
 | 
				
			||||||
publishVersion=15.1.0
 | 
					publishVersion=15.1.1
 | 
				
			||||||
buildCount=0
 | 
					buildCount=0
 | 
				
			||||||
baseBetaVersion=15.1.1
 | 
					baseBetaVersion=15.1.2
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -3,6 +3,11 @@
 | 
				
			|||||||
    xmlns:android="http://schemas.android.com/apk/res/android"
 | 
					    xmlns:android="http://schemas.android.com/apk/res/android"
 | 
				
			||||||
    package="cc.winboll.studio.numtable">
 | 
					    package="cc.winboll.studio.numtable">
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						<!-- Android 13及以下需要的权限 -->
 | 
				
			||||||
 | 
						<uses-permission android:name="com.android.launcher.permission.INSTALL_SHORTCUT" />
 | 
				
			||||||
 | 
						<!-- 可选:查询快捷方式是否存在(部分机型需要) -->
 | 
				
			||||||
 | 
						<uses-permission android:name="com.android.launcher.permission.QUERY_ALL_PACKAGES" />
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    <application
 | 
					    <application
 | 
				
			||||||
        android:allowBackup="true"
 | 
					        android:allowBackup="true"
 | 
				
			||||||
        android:icon="@drawable/ic_launcher"
 | 
					        android:icon="@drawable/ic_launcher"
 | 
				
			||||||
@@ -29,9 +34,7 @@
 | 
				
			|||||||
        <meta-data
 | 
					        <meta-data
 | 
				
			||||||
            android:name="android.max_aspect"
 | 
					            android:name="android.max_aspect"
 | 
				
			||||||
            android:value="4.0"/>
 | 
					            android:value="4.0"/>
 | 
				
			||||||
 | 
							
 | 
				
			||||||
        <activity android:name=".GlobalApplication$CrashActivity"/>
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    </application>
 | 
					    </application>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
</manifest>
 | 
					</manifest>
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -1,10 +1,20 @@
 | 
				
			|||||||
package cc.winboll.studio.numtable;
 | 
					package cc.winboll.studio.numtable;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import android.content.Intent;
 | 
				
			||||||
 | 
					import android.content.pm.ShortcutInfo;
 | 
				
			||||||
 | 
					import android.content.pm.ShortcutManager;
 | 
				
			||||||
 | 
					import android.graphics.drawable.Icon;
 | 
				
			||||||
 | 
					import android.os.Build;
 | 
				
			||||||
import android.os.Bundle;
 | 
					import android.os.Bundle;
 | 
				
			||||||
 | 
					import android.view.View;
 | 
				
			||||||
 | 
					import android.widget.Button;
 | 
				
			||||||
 | 
					import android.widget.RadioButton;
 | 
				
			||||||
import androidx.appcompat.app.AppCompatActivity;
 | 
					import androidx.appcompat.app.AppCompatActivity;
 | 
				
			||||||
import androidx.appcompat.widget.Toolbar;
 | 
					import androidx.appcompat.widget.Toolbar;
 | 
				
			||||||
import cc.winboll.studio.libappbase.LogView;
 | 
					import cc.winboll.studio.libappbase.LogView;
 | 
				
			||||||
 | 
					import cc.winboll.studio.numtable.R;
 | 
				
			||||||
import com.hjq.toast.ToastUtils;
 | 
					import com.hjq.toast.ToastUtils;
 | 
				
			||||||
 | 
					import java.util.UUID;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
public class MainActivity extends AppCompatActivity {
 | 
					public class MainActivity extends AppCompatActivity {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -19,10 +29,99 @@ public class MainActivity extends AppCompatActivity {
 | 
				
			|||||||
		setSupportActionBar(toolbar);
 | 
							setSupportActionBar(toolbar);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        mLogView = findViewById(R.id.logview);
 | 
					        mLogView = findViewById(R.id.logview);
 | 
				
			||||||
        
 | 
					
 | 
				
			||||||
        ToastUtils.show("onCreate");
 | 
							// 初始化创建快捷方式按钮
 | 
				
			||||||
 | 
							Button btnCreateShortcut = findViewById(R.id.btn_create_shortcut);
 | 
				
			||||||
 | 
							btnCreateShortcut.setOnClickListener(new View.OnClickListener() {
 | 
				
			||||||
 | 
									@Override
 | 
				
			||||||
 | 
									public void onClick(View v) {
 | 
				
			||||||
 | 
										createDesktopShortcut();
 | 
				
			||||||
 | 
									}
 | 
				
			||||||
 | 
								});
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							((RadioButton)findViewById(R.id.rb_right)).setChecked(true);
 | 
				
			||||||
 | 
							((RadioButton)findViewById(R.id.rb_left)).setChecked(false);
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						public void onDirectionClick(View view) {
 | 
				
			||||||
 | 
							switch (view.getId()) {
 | 
				
			||||||
 | 
								case R.id.rb_right:
 | 
				
			||||||
 | 
									{
 | 
				
			||||||
 | 
										((RadioButton)findViewById(R.id.rb_left)).setChecked(false);
 | 
				
			||||||
 | 
										break;
 | 
				
			||||||
 | 
									}
 | 
				
			||||||
 | 
								case R.id.rb_left:
 | 
				
			||||||
 | 
									{
 | 
				
			||||||
 | 
										((RadioButton)findViewById(R.id.rb_right)).setChecked(false);
 | 
				
			||||||
 | 
										break;
 | 
				
			||||||
 | 
									}
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						/**
 | 
				
			||||||
 | 
						 * 创建桌面快捷方式
 | 
				
			||||||
 | 
						 */
 | 
				
			||||||
 | 
						private void createDesktopShortcut() {
 | 
				
			||||||
 | 
							// 1. 创建启动目标Activity的Intent(通常是你的主Activity)
 | 
				
			||||||
 | 
							Intent targetIntent = new Intent(this, MainActivity.class); // 替换为你的主Activity
 | 
				
			||||||
 | 
							targetIntent.setAction(Intent.ACTION_MAIN);
 | 
				
			||||||
 | 
							targetIntent.addCategory(Intent.CATEGORY_LAUNCHER);
 | 
				
			||||||
 | 
							targetIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_RESET_TASK_IF_NEEDED);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							// 2. 创建快捷方式的Intent
 | 
				
			||||||
 | 
							Intent shortcutIntent = new Intent();
 | 
				
			||||||
 | 
							if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
 | 
				
			||||||
 | 
								// 生成随机UUID
 | 
				
			||||||
 | 
								UUID uuid = UUID.randomUUID();
 | 
				
			||||||
 | 
								// 转换为字符串
 | 
				
			||||||
 | 
								String uuidStr = uuid.toString();
 | 
				
			||||||
 | 
								// Android 8.0及以上:使用ShortcutManager
 | 
				
			||||||
 | 
								ShortcutManager shortcutManager = getSystemService(ShortcutManager.class);
 | 
				
			||||||
 | 
								if (shortcutManager.isRequestPinShortcutSupported()) {
 | 
				
			||||||
 | 
									if (((RadioButton)findViewById(R.id.rb_right)).isChecked()) {
 | 
				
			||||||
 | 
										// 创建快捷方式信息
 | 
				
			||||||
 | 
										ShortcutInfo shortcutInfo = new ShortcutInfo.Builder(this, uuidStr) // 唯一ID
 | 
				
			||||||
 | 
											.setShortLabel(">>") // 短标签(显示在桌面)
 | 
				
			||||||
 | 
											.setLongLabel("在右边 >>") // 长标签(长按显示)
 | 
				
			||||||
 | 
											.setIcon(Icon.createWithResource(this, R.drawable.ic_point_right)) // 图标
 | 
				
			||||||
 | 
											.setIntent(targetIntent)
 | 
				
			||||||
 | 
											.build();
 | 
				
			||||||
 | 
										// 发送创建请求
 | 
				
			||||||
 | 
										shortcutManager.requestPinShortcut(shortcutInfo, null);
 | 
				
			||||||
 | 
									} else {
 | 
				
			||||||
 | 
										ShortcutInfo shortcutInfo = new ShortcutInfo.Builder(this, uuidStr) // 唯一ID
 | 
				
			||||||
 | 
											.setShortLabel("<<") // 短标签(显示在桌面)
 | 
				
			||||||
 | 
											.setLongLabel("在左边 <<") // 长标签(长按显示)
 | 
				
			||||||
 | 
											.setIcon(Icon.createWithResource(this, R.drawable.ic_point_left)) // 图标
 | 
				
			||||||
 | 
											.setIntent(targetIntent)
 | 
				
			||||||
 | 
											.build();
 | 
				
			||||||
 | 
										// 发送创建请求
 | 
				
			||||||
 | 
										shortcutManager.requestPinShortcut(shortcutInfo, null);
 | 
				
			||||||
 | 
									}
 | 
				
			||||||
 | 
									ToastUtils.show("已请求创建快捷方式");
 | 
				
			||||||
 | 
								} else {
 | 
				
			||||||
 | 
									ToastUtils.show("当前设备不支持创建快捷方式");
 | 
				
			||||||
 | 
								}
 | 
				
			||||||
 | 
							} else {
 | 
				
			||||||
 | 
								// Android 7.1及以下:使用旧版广播方式
 | 
				
			||||||
 | 
								shortcutIntent.putExtra(Intent.EXTRA_SHORTCUT_INTENT, targetIntent);
 | 
				
			||||||
 | 
								shortcutIntent.putExtra(Intent.EXTRA_SHORTCUT_NAME, "应用快捷方式"); // 快捷方式名称
 | 
				
			||||||
 | 
								// 设置图标(使用应用图标)
 | 
				
			||||||
 | 
								shortcutIntent.putExtra(Intent.EXTRA_SHORTCUT_ICON_RESOURCE, 
 | 
				
			||||||
 | 
														Intent.ShortcutIconResource.fromContext(this, R.mipmap.ic_launcher));
 | 
				
			||||||
 | 
								// 标记为创建快捷方式
 | 
				
			||||||
 | 
								shortcutIntent.setAction("com.android.launcher.action.INSTALL_SHORTCUT");
 | 
				
			||||||
 | 
								// 防止重复创建
 | 
				
			||||||
 | 
								shortcutIntent.putExtra("duplicate", false);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
								// 发送广播创建快捷方式
 | 
				
			||||||
 | 
								sendBroadcast(shortcutIntent);
 | 
				
			||||||
 | 
								ToastUtils.show("快捷方式已创建");
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    @Override
 | 
					    @Override
 | 
				
			||||||
    protected void onResume() {
 | 
					    protected void onResume() {
 | 
				
			||||||
        super.onResume();
 | 
					        super.onResume();
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										20
									
								
								numtable/src/main/res/drawable/ic_point_left.xml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										20
									
								
								numtable/src/main/res/drawable/ic_point_left.xml
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,20 @@
 | 
				
			|||||||
 | 
					<vector xmlns:android="http://schemas.android.com/apk/res/android"
 | 
				
			||||||
 | 
					    android:width="512dp"
 | 
				
			||||||
 | 
					    android:height="512dp"
 | 
				
			||||||
 | 
					    android:viewportWidth="512"
 | 
				
			||||||
 | 
					    android:viewportHeight="512">
 | 
				
			||||||
 | 
					    <path
 | 
				
			||||||
 | 
					        android:fillColor="#FF3D8A1C"
 | 
				
			||||||
 | 
					        android:strokeColor="#FFF5DD00"
 | 
				
			||||||
 | 
					        android:strokeWidth="5.0"
 | 
				
			||||||
 | 
					        android:strokeLineCap="round"
 | 
				
			||||||
 | 
					        android:strokeMiterLimit="10"
 | 
				
			||||||
 | 
					        android:pathData="M401.84 141.95C361.52 236.12 354.86 278.98 399.2 382.12 359.53 383.01 245.24 289.83 245.38 265.73 247.41 236.75 361.69 143.4 401.84 141.95Z"/>
 | 
				
			||||||
 | 
					    <path
 | 
				
			||||||
 | 
					        android:fillColor="#FF3D8A1C"
 | 
				
			||||||
 | 
					        android:strokeColor="#FFF5DD00"
 | 
				
			||||||
 | 
					        android:strokeWidth="5.0"
 | 
				
			||||||
 | 
					        android:strokeLineCap="round"
 | 
				
			||||||
 | 
					        android:strokeMiterLimit="10"
 | 
				
			||||||
 | 
					        android:pathData="M276.81 141.95C236.49 236.12 229.83 278.98 274.17 382.12 234.5 383.01 120.2 289.83 120.35 265.73 122.37 236.75 236.66 143.4 276.81 141.95Z"/>
 | 
				
			||||||
 | 
					</vector>
 | 
				
			||||||
							
								
								
									
										20
									
								
								numtable/src/main/res/drawable/ic_point_right.xml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										20
									
								
								numtable/src/main/res/drawable/ic_point_right.xml
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,20 @@
 | 
				
			|||||||
 | 
					<vector xmlns:android="http://schemas.android.com/apk/res/android"
 | 
				
			||||||
 | 
					    android:width="512dp"
 | 
				
			||||||
 | 
					    android:height="512dp"
 | 
				
			||||||
 | 
					    android:viewportWidth="512"
 | 
				
			||||||
 | 
					    android:viewportHeight="512">
 | 
				
			||||||
 | 
					    <path
 | 
				
			||||||
 | 
					        android:fillColor="#FF3D8A1C"
 | 
				
			||||||
 | 
					        android:strokeColor="#FFF5DD00"
 | 
				
			||||||
 | 
					        android:strokeWidth="5.0"
 | 
				
			||||||
 | 
					        android:strokeLineCap="round"
 | 
				
			||||||
 | 
					        android:strokeMiterLimit="10"
 | 
				
			||||||
 | 
					        android:pathData="M103.57 145.68C143.89 239.85 150.55 282.71 106.21 385.85 145.88 386.74 260.17 293.56 260.03 269.46 258 240.48 143.72 147.13 103.57 145.68Z"/>
 | 
				
			||||||
 | 
					    <path
 | 
				
			||||||
 | 
					        android:fillColor="#FF3D8A1C"
 | 
				
			||||||
 | 
					        android:strokeColor="#FFF5DD00"
 | 
				
			||||||
 | 
					        android:strokeWidth="5.0"
 | 
				
			||||||
 | 
					        android:strokeLineCap="round"
 | 
				
			||||||
 | 
					        android:strokeMiterLimit="10"
 | 
				
			||||||
 | 
					        android:pathData="M228.6 145.68C268.92 239.85 275.58 282.71 231.24 385.85 270.91 386.74 385.21 293.56 385.06 269.46 383.04 240.48 268.75 147.13 228.6 145.68Z"/>
 | 
				
			||||||
 | 
					</vector>
 | 
				
			||||||
@@ -23,14 +23,44 @@
 | 
				
			|||||||
		android:orientation="vertical"
 | 
							android:orientation="vertical"
 | 
				
			||||||
		android:layout_width="match_parent"
 | 
							android:layout_width="match_parent"
 | 
				
			||||||
		android:layout_height="0dp"
 | 
							android:layout_height="0dp"
 | 
				
			||||||
		android:layout_weight="1.0"
 | 
							android:layout_weight="1.0">
 | 
				
			||||||
		android:gravity="center_vertical|center_horizontal">
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
		<TextView
 | 
							<LinearLayout
 | 
				
			||||||
			android:layout_width="wrap_content"
 | 
								android:orientation="horizontal"
 | 
				
			||||||
 | 
								android:layout_width="match_parent"
 | 
				
			||||||
			android:layout_height="wrap_content"
 | 
								android:layout_height="wrap_content"
 | 
				
			||||||
			android:text="NumTable"
 | 
								android:gravity="right|center_vertical"
 | 
				
			||||||
			android:textAppearance="?android:attr/textAppearanceLarge"/>
 | 
								android:layout_gravity="center_vertical">
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
								<ImageView
 | 
				
			||||||
 | 
									android:layout_width="60dp"
 | 
				
			||||||
 | 
									android:layout_height="60dp"
 | 
				
			||||||
 | 
									android:background="@drawable/ic_point_right"/>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
								<RadioButton
 | 
				
			||||||
 | 
									android:layout_width="wrap_content"
 | 
				
			||||||
 | 
									android:layout_height="wrap_content"
 | 
				
			||||||
 | 
									android:id="@+id/rb_right"
 | 
				
			||||||
 | 
									android:onClick="onDirectionClick"/>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
								<ImageView
 | 
				
			||||||
 | 
									android:layout_width="60dp"
 | 
				
			||||||
 | 
									android:layout_height="60dp"
 | 
				
			||||||
 | 
									android:background="@drawable/ic_point_left"/>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
								<RadioButton
 | 
				
			||||||
 | 
									android:layout_width="wrap_content"
 | 
				
			||||||
 | 
									android:layout_height="wrap_content"
 | 
				
			||||||
 | 
									android:id="@+id/rb_left"
 | 
				
			||||||
 | 
									android:onClick="onDirectionClick"/>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
								<Button
 | 
				
			||||||
 | 
									android:id="@+id/btn_create_shortcut"
 | 
				
			||||||
 | 
									android:layout_width="wrap_content"
 | 
				
			||||||
 | 
									android:layout_height="wrap_content"
 | 
				
			||||||
 | 
									android:text="创建桌面快捷方式"/>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							</LinearLayout>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	</LinearLayout>
 | 
						</LinearLayout>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user