api(runtime): runtime.requestPermissions()

This commit is contained in:
hyb1996
2018-05-28 20:51:05 +08:00
parent faa5ef4c48
commit 2d6fed4c99
11 changed files with 229 additions and 4 deletions

View File

@@ -13,6 +13,11 @@
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
<uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW"/>
<!-- 非Auto.js运行必需不会主动申请某些脚本可以自行申请-->
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/>
<uses-permission android:name="android.permission.RECORD_AUDIO"/>
<!-- Ad SDK Permissions -->
<uses-permission android:name="android.permission.READ_PHONE_STATE"/>

View File

@@ -9,7 +9,11 @@ import android.view.Menu;
import android.view.MenuItem;
import com.stardust.app.OnActivityResultDelegate;
import com.stardust.autojs.core.permission.OnRequestPermissionsResultCallback;
import com.stardust.autojs.core.permission.PermissionRequestProxyActivity;
import com.stardust.autojs.core.permission.RequestPermissionCallbacks;
import com.stardust.pio.PFiles;
import org.autojs.autojs.R;
import org.autojs.autojs.storage.file.TmpScriptFiles;
import org.autojs.autojs.ui.BaseActivity;
@@ -35,7 +39,7 @@ import static org.autojs.autojs.ui.edit.EditorView.EXTRA_READ_ONLY;
* Created by Stardust on 2017/1/29.
*/
@EActivity(R.layout.activity_edit)
public class EditActivity extends BaseActivity implements OnActivityResultDelegate.DelegateHost {
public class EditActivity extends BaseActivity implements OnActivityResultDelegate.DelegateHost, PermissionRequestProxyActivity {
private OnActivityResultDelegate.Mediator mMediator = new OnActivityResultDelegate.Mediator();
@@ -44,6 +48,7 @@ public class EditActivity extends BaseActivity implements OnActivityResultDelega
private EditorMenu mEditorMenu;
private RequestPermissionCallbacks mRequestPermissionCallbacks = new RequestPermissionCallbacks();
public static void editFile(Context context, String path) {
editFile(context, null, path);
@@ -192,4 +197,19 @@ public class EditActivity extends BaseActivity implements OnActivityResultDelega
}
}
@Override
public void addRequestPermissionsCallback(OnRequestPermissionsResultCallback callback) {
mRequestPermissionCallbacks.addCallback(callback);
}
@Override
public boolean removeRequestPermissionsCallback(OnRequestPermissionsResultCallback callback) {
return mRequestPermissionCallbacks.removeCallback(callback);
}
@Override
public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
super.onRequestPermissionsResult(requestCode, permissions, grantResults);
mRequestPermissionCallbacks.onRequestPermissionsResult(requestCode, permissions, grantResults);
}
}

View File

@@ -20,8 +20,12 @@ import android.view.View;
import com.stardust.app.FragmentPagerAdapterBuilder;
import com.stardust.app.OnActivityResultDelegate;
import com.stardust.autojs.core.permission.OnRequestPermissionsResultCallback;
import com.stardust.autojs.core.permission.PermissionRequestProxyActivity;
import com.stardust.autojs.core.permission.RequestPermissionCallbacks;
import com.stardust.enhancedfloaty.FloatyService;
import com.stardust.pio.PFiles;
import org.autojs.autojs.BuildConfig;
import org.autojs.autojs.Pref;
import org.autojs.autojs.R;
@@ -42,8 +46,11 @@ import org.autojs.autojs.ui.settings.SettingsActivity_;
import org.autojs.autojs.ui.update.VersionGuard;
import org.autojs.autojs.ui.widget.CommonMarkdownView;
import org.autojs.autojs.ui.widget.SearchViewItem;
import com.stardust.theme.ThemeColorManager;
import org.autojs.autojs.theme.dialog.ThemeColorMaterialDialogBuilder;
import com.stardust.util.BackPressedHandler;
import com.stardust.util.DeveloperUtils;
import com.stardust.util.DrawerAutoClose;
@@ -58,7 +65,8 @@ import org.greenrobot.eventbus.Subscribe;
import java.util.Arrays;
@EActivity(R.layout.activity_main)
public class MainActivity extends BaseActivity implements OnActivityResultDelegate.DelegateHost, BackPressedHandler.HostActivity {
public class MainActivity extends BaseActivity implements OnActivityResultDelegate.DelegateHost, BackPressedHandler.HostActivity, PermissionRequestProxyActivity {
public static class DrawerOpenEvent {
static DrawerOpenEvent SINGLETON = new DrawerOpenEvent();
@@ -77,6 +85,7 @@ public class MainActivity extends BaseActivity implements OnActivityResultDelega
private FragmentPagerAdapterBuilder.StoredFragmentPagerAdapter mPagerAdapter;
private OnActivityResultDelegate.Mediator mActivityResultMediator = new OnActivityResultDelegate.Mediator();
private RequestPermissionCallbacks mRequestPermissionCallbacks = new RequestPermissionCallbacks();
private VersionGuard mVersionGuard;
private BackPressedHandler.Observer mBackPressObserver = new BackPressedHandler.Observer();
private SearchViewItem mSearchViewItem;
@@ -228,6 +237,9 @@ public class MainActivity extends BaseActivity implements OnActivityResultDelega
@Override
public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
super.onRequestPermissionsResult(requestCode, permissions, grantResults);
if (mRequestPermissionCallbacks.onRequestPermissionsResult(requestCode, permissions, grantResults)) {
return;
}
if (getGrantResult(Manifest.permission.READ_EXTERNAL_STORAGE, permissions, grantResults) == PackageManager.PERMISSION_GRANTED) {
StorageFileProvider.getDefault().notifyStoragePermissionGranted();
}
@@ -275,6 +287,17 @@ public class MainActivity extends BaseActivity implements OnActivityResultDelega
}
}
@Override
public void addRequestPermissionsCallback(OnRequestPermissionsResultCallback callback) {
mRequestPermissionCallbacks.addCallback(callback);
}
@Override
public boolean removeRequestPermissionsCallback(OnRequestPermissionsResultCallback callback) {
return mRequestPermissionCallbacks.removeCallback(callback);
}
@Override
public BackPressedHandler.Observer getBackPressedObserver() {
return mBackPressObserver;
@@ -289,6 +312,7 @@ public class MainActivity extends BaseActivity implements OnActivityResultDelega
return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
if (item.getItemId() == R.id.action_log) {