Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Bump v3.1.0 #192

Open
wants to merge 12 commits into
base: master
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 0 additions & 1 deletion build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,6 @@ buildscript {
jcenter()
google()
mavenCentral()

maven { url "https://plugins.gradle.org/m2/" }
maven { url "https://maven.google.com" }
}
Expand Down
10 changes: 7 additions & 3 deletions local.properties
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,10 @@
# Location of the SDK. This is only used by Gradle.
# For customization when using a Version Control System, please read the
# header note.
#Thu Aug 02 10:23:49 CST 2018
ndk.dir=/Users/yanhecun/Library/Android/sdk/ndk-bundle
sdk.dir=/Users/yanhecun/Library/Android/sdk
#Mon Apr 13 14:53:44 CST 2020
#ndk.dir=/Users/yanhecun/Library/Android/sdk/ndk-bundle
#ndk.dir=D\:\\android-sdk-windows\\ndk\\20.1.5948944
#sdk.dir=D\:\\android-sdk-windows

sdk.dir=/Users/river/Library/Android/sdk
ndk.dir=/Users/river/Library/Android/sdk/ndk/21.3.6528147
Binary file removed qpysdk/src/main/libs/armeabi-v7a/libSDL2.so
Binary file not shown.
Binary file removed qpysdk/src/main/libs/armeabi-v7a/libSDL2_gfx.so
Binary file not shown.
Binary file removed qpysdk/src/main/libs/armeabi-v7a/libSDL2_image.so
Binary file not shown.
Binary file removed qpysdk/src/main/libs/armeabi-v7a/libSDL2_mixer.so
Binary file not shown.
Binary file removed qpysdk/src/main/libs/armeabi-v7a/libSDL2_ttf.so
Binary file not shown.
Binary file removed qpysdk/src/main/libs/armeabi-v7a/libmain.so
Binary file not shown.
Binary file removed qpysdk/src/main/libs/armeabi-v7a/libpng16.so
Binary file not shown.
Binary file removed qpysdk/src/main/libs/armeabi-v7a/libpython2.7.so
Binary file not shown.
Binary file removed qpysdk/src/main/libs/armeabi-v7a/libqpysdk.so
Binary file not shown.
22 changes: 18 additions & 4 deletions qpython/build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -14,8 +14,8 @@ android {
defaultConfig {
minSdkVersion rootProject.ext.minSdkVersion
targetSdkVersion rootProject.ext.targetSdkVersion
versionCode 304
versionName "3.0.0"
versionCode 310
versionName "3.1.0"
multiDexEnabled true
vectorDrawables.useSupportLibrary = true

Expand Down Expand Up @@ -68,7 +68,12 @@ android {
}

debug {
signingConfig signingConfigs.release
// signingConfig signingConfigs.release
debuggable true
minifyEnabled false
jniDebuggable true
signingConfig signingConfigs.debug
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}

}
Expand Down Expand Up @@ -162,6 +167,9 @@ dependencies {
api 'org.litepal.android:core:1.3.1'
api 'me.dm7.barcodescanner:zxing:1.9'
api 'com.android.support:multidex:1.0.1'
implementation ('com.gyf.cactus:cactus-support:1.1.3-beta09'){
exclude group: 'com.google.guava'
}

api rootProject.ext.libOkHttp3
api rootProject.ext.libOkHttp3Log
Expand All @@ -176,6 +184,12 @@ dependencies {
api rootProject.ext.libSupportCardView
api rootProject.ext.libSupportPreference

odApi rootProject.ext.firebaseCore
odApi rootProject.ext.firebaseMsg
odApi rootProject.ext.firebaseAuth
odApi rootProject.ext.firebaseDatabase
odApi rootProject.ext.googlePlayServiceAuth

osApi rootProject.ext.firebaseCore
osApi rootProject.ext.firebaseMsg
osApi rootProject.ext.firebaseAuth
Expand All @@ -192,7 +206,7 @@ dependencies {
api rootProject.ext.retrofitCoverterGson
api rootProject.ext.retrofitAdapterRxjava

api 'com.android.support.constraint:constraint-layout:1.0.2'
api 'com.android.support.constraint:constraint-layout:1.1.3'

// 微信
opApi('com.tencent.mm.opensdk:wechat-sdk-android-with-mta:1.4.0') {
Expand Down
20 changes: 18 additions & 2 deletions qpython/src/main/AndroidManifest.xml
Original file line number Diff line number Diff line change
Expand Up @@ -19,8 +19,6 @@
<uses-permission android:name="android.permission.VIBRATE" />
<uses-permission android:name="android.permission.RECEIVE_USER_PRESENT" />
<uses-permission android:name="com.android.vending.BILLING"/>
<uses-permission android:name="com.android.launcher.permission.INSTALL_SHORTCUT" />
<uses-permission android:name="com.android.launcher.permission.UNINSTALL_SHORTCUT" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.READ_MEDIA_STORAGE" />
Expand All @@ -35,6 +33,22 @@
<uses-permission android:name="android.permission.KILL_BACKGROUND_PROCESSES"/>
<uses-permission android:name="net.dinglisch.android.tasker.PERMISSION_RUN_TASKS" />

<!--快捷方式开始-->
<uses-permission android:name="com.android.launcher.permission.INSTALL_SHORTCUT" /><!-- 添加快捷方式 -->
<uses-permission android:name="com.android.launcher.permission.UNINSTALL_SHORTCUT" /><!-- 移除快捷方式 -->
<uses-permission android:name="android.permission.INSTALL_SHORTCUT" />
<uses-permission android:name="android.permission.UNINSTALL_SHORTCUT" />
<!-- 查询快捷方式2.1以下 -->
<uses-permission android:name="com.android.launcher.permission.READ_SETTINGS" />
<uses-permission android:name="com.android.launcher.permission.WRITE_SETTINGS" />
<!-- 查询快捷方式4.4及以下 -->
<uses-permission android:name="com.android.launcher2.permission.READ_SETTINGS" />
<uses-permission android:name="com.android.launcher2.permission.WRITE_SETTINGS" />
<!-- 查询快捷方式4.4以上 -->
<uses-permission android:name="com.android.launcher3.permission.READ_SETTINGS" />
<uses-permission android:name="com.android.launcher3.permission.WRITE_SETTINGS" />
<!--快捷方式结束-->

<uses-feature android:name="android.hardware.microphone" android:required="false"/>
<uses-feature android:name="android.hardware.telephony" android:required="false"/>
<uses-feature android:name="android.hardware.camera" android:required="false"/>
Expand Down Expand Up @@ -68,6 +82,8 @@
<service android:name=".main.service.QPyService"/>
<service android:name="org.qpython.qsl4a.QPyScriptService"/>
<service android:name=".main.service.FTPServerService"/>


<activity
android:name=".main.activity.SignInActivity"
android:launchMode="singleTask"/>
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
package org.qpython.qpy.console.shortcuts;

import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;

import org.qpython.qsl4a.qsl4a.LogUtil;

public class ShortcutReceiver extends BroadcastReceiver {


@Override
public void onReceive(Context context, Intent intent) {
LogUtil.e("111111111" + intent);
}
}
Original file line number Diff line number Diff line change
@@ -1,18 +1,31 @@
package org.qpython.qpy.main.activity;

import android.app.Activity;
import android.Manifest;
import android.app.ActivityManager;
import android.app.AlertDialog;
import android.app.LoaderManager;
import android.app.PendingIntent;
import android.content.Context;
import android.content.Intent;
import android.content.IntentFilter;
import android.content.Loader;
import android.content.pm.PackageManager;
import android.content.pm.ResolveInfo;
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.Handler;
import android.support.annotation.NonNull;
import android.support.annotation.Nullable;
import android.support.v7.app.AppCompatActivity;
import android.support.v4.app.ActivityCompat;
import android.support.v4.content.ContextCompat;
import android.support.v7.widget.GridLayoutManager;
import android.support.v7.widget.LinearLayoutManager;
import android.support.v7.widget.RecyclerView;
import android.widget.TextView;
import android.widget.Toast;

import com.quseit.util.FileHelper;
import com.quseit.util.FolderUtils;
Expand All @@ -23,30 +36,38 @@
import org.greenrobot.eventbus.ThreadMode;
import org.qpython.qpy.R;
import org.qpython.qpy.console.ScriptExec;
import org.qpython.qpy.console.shortcuts.ShortcutReceiver;
import org.qpython.qpy.main.adapter.AppListAdapter;
import org.qpython.qpy.main.event.AppsLoader;
import org.qpython.qpy.main.model.AppModel;
import org.qpython.qpy.main.model.QPyScriptModel;
import org.qpython.qpy.utils.ShortcutUtil;
import org.qpython.qpysdk.QPyConstants;
import org.qpython.qpysdk.utils.Utils;
import org.qpython.qsl4a.qsl4a.LogUtil;

import java.io.File;
import java.io.IOException;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;

import static org.qpython.qpy.R2.string.show;

/**
* Local App list
* Created by Hmei on 2017-05-22.
*/

public class AppListActivity extends BaseActivity implements LoaderManager.LoaderCallbacks<ArrayList<AppModel>> {
public static final String TYPE_SCRIPT = "script";
private static final int REQUEST_INSTALL_SHORTCUT = 0;

private List<AppModel> dataList;
private AppListAdapter adapter;

ShortcutReceiver receiver;

public static void start(Context context, String type) {
Intent starter = new Intent(context, AppListActivity.class);
starter.putExtra("type", type);
Expand All @@ -56,12 +77,25 @@ public static void start(Context context, String type) {
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
initShortcutReceiver();
runShortcut();
setContentView(R.layout.activity_local_app);
initView();
EventBus.getDefault().register(this);
}

private void initShortcutReceiver() {
IntentFilter filter = new IntentFilter();
filter.addAction(Intent.ACTION_CREATE_SHORTCUT);
filter.addAction("com.android.launcher.action.INSTALL_SHORTCUT");
filter.addAction("android.content.pm.action.CONFIRM_PIN_SHORTCUT");
filter.addAction(Intent.ACTION_VIEW);

receiver = new ShortcutReceiver();
registerReceiver(receiver,filter);

}

@Override
protected void onResume() {
super.onResume();
Expand All @@ -74,6 +108,9 @@ protected void onResume() {
@Override
protected void onDestroy() {
super.onDestroy();
if (receiver != null){
unregisterReceiver(receiver);
}
EventBus.getDefault().unregister(this);
}

Expand All @@ -90,6 +127,7 @@ private void runShortcut() {
}
}

QPyScriptModel mBean;
private void initView() {
dataList = new ArrayList<>();
adapter = new AppListAdapter(dataList, getIntent().getStringExtra("type"), this);
Expand All @@ -104,6 +142,16 @@ public void runProject(QPyScriptModel item) {
ScriptExec.getInstance().playProject(AppListActivity.this, item.getPath(), false);
}

@Override
public void createShortcut(QPyScriptModel item) {
mBean = item;
// if (!checkPermission()){
// return;
// }
createShortcutOnThis();
// test();
}

@Override
public void exit() {
AppListActivity.this.finish();
Expand All @@ -116,9 +164,113 @@ public void exit() {
appsView.setAdapter(adapter);

((TextView) findViewById(R.id.tv_folder_name)).setText(R.string.qpy_app);
findViewById(R.id.iv_back).setOnClickListener(view -> AppListActivity.this.finish());

getScriptList();
}

// private boolean checkPermission() {
// if (Build.VERSION.SDK_INT >= 23) {
// int checkPermission = ContextCompat.checkSelfPermission(this, Manifest.permission.INSTALL_SHORTCUT);
// LogUtil.e("checkPermission" + checkPermission);
// LogUtil.e("checkPermission" + PackageManager.PERMISSION_GRANTED);
// if (checkPermission != PackageManager.PERMISSION_GRANTED) {
// ActivityCompat.requestPermissions(this, new String[]{Manifest.permission.INSTALL_SHORTCUT}, REQUEST_INSTALL_SHORTCUT);
// return false;
// } else {
// return true;
// }
// } else {
// return true;
// }
// }

// @Override
// public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
// if (requestCode == REQUEST_INSTALL_SHORTCUT) {
// if (grantResults[0] != PackageManager.PERMISSION_GRANTED) {
// Toast.makeText(this, R.string.toast_read_permission_deny, Toast.LENGTH_SHORT).show();
// } else {
// createShortcutOnThis();
// }
// }
// }

private void test(){
judgeShortcutNameV2("org.qpython.qpy");
}

private void createShortcutOnThis(){
if (mBean == null){
return;
}

Intent intent = new Intent();
intent.setClass(this, AppListActivity.class);
intent.setAction(Intent.ACTION_VIEW);
intent.putExtra("type", "script");
intent.putExtra("path", mBean.getPath());
intent.putExtra("isProj", mBean.isProj());

if (android.os.Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
ShortcutManager mShortcutManager = getSystemService(ShortcutManager.class);
if (mShortcutManager.isRequestPinShortcutSupported()) {
ShortcutInfo pinShortcutInfo =
new ShortcutInfo.Builder(this, mBean.getLabel())
.setShortLabel(mBean.getLabel())
.setLongLabel(mBean.getLabel())
.setIcon(Icon.createWithResource(this, mBean.getIconRes()))
.setIntent(intent)
.build();
Intent pinnedShortcutCallbackIntent =
mShortcutManager.createShortcutResultIntent(pinShortcutInfo);
PendingIntent successCallback = PendingIntent.getBroadcast(this, 0,
pinnedShortcutCallbackIntent, 0);
LogUtil.e("createShortcut: " + "111111111111");
mShortcutManager.requestPinShortcut(pinShortcutInfo,
successCallback.getIntentSender());
LogUtil.e("createShortcut: " + mBean.getLabel());
new Handler().postDelayed(new Runnable() {
@Override
public void run() {
judgeShortcutNameV2("org.qpython.qpy");
// judgeShortcutName(mBean.getLabel());
}
},200);
}
} else {
//Adding shortcut for MainActivity
//on Home screen
Intent addIntent = new Intent();
addIntent.putExtra(Intent.EXTRA_SHORTCUT_INTENT, intent);
addIntent.putExtra(Intent.EXTRA_SHORTCUT_NAME, mBean.getLabel());
addIntent.putExtra(Intent.EXTRA_SHORTCUT_ICON_RESOURCE,
Intent.ShortcutIconResource.fromContext(getApplicationContext(),
mBean.getIconRes()));
addIntent.setAction("com.android.launcher.action.INSTALL_SHORTCUT");
getApplicationContext().sendBroadcast(addIntent);
Toast.makeText(this, getString(R.string.shortcut_create_suc, mBean.getLabel()), Toast.LENGTH_SHORT).show();
}
}

// private void judgeShortcutName(String name) {
// int shortcutNum = 0;
// for (String packageName : ShortcutUtil.getAllTheLauncher(getApplicationContext())) {
// LogUtil.e("packageName111111: " + packageName);
// if (name.equals(packageName)) {
// shortcutNum ++;
// }
// }
// LogUtil.e("packageName222222: " + shortcutNum);
// }

private void judgeShortcutNameV2(String name) {
if (!ShortcutUtil.getShortcutInfo(getApplicationContext()).isEmpty()){
return;
}
Toast.makeText(this, getString(R.string.shortcut_create_fail), Toast.LENGTH_SHORT).show();
}


private void getScriptList() {
try {
Expand Down
Loading