Bump v3.1.0 by riverfor · Pull Request #192 · qpython-android/qpython
@@ -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
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;
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);
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();
QPyScriptModel mBean; private void initView() { dataList = new ArrayList<>(); adapter = new AppListAdapter(dataList, getIntent().getStringExtra("type"), this);
@Override public void createShortcut(QPyScriptModel item) { mBean = item; // if (!checkPermission()){ // return; // } createShortcutOnThis(); // test(); }
@Override public void exit() { AppListActivity.this.finish();
((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 {