Затем я хочу объединить свои текущий проект с другим. Поскольку новая комбинация состоит из очень большого количества классов Java (более 10 классов Java), и ею будет очень беспорядочно и трудно управлять, если я просто помещу все классы Java в одну и ту же папку, я разделяю свои классы Java и разделяю их на несколько группируются по функциям.
Это исходная структура (всего состоит из 5 Java-классов)
[img]https:// i.sstatic.net/FLk1qKVo.png[/img]
И вот что я хочу реорганизовать (а позже хочу представить еще больше пакетов):
< img alt="Новая структура проекта, которую я хочу (просто поместите все классы Java, кроме MainAcrivity.java)" src="https://i.sstatic.net/FQwh5CVo.png" />
Вот мой MainActivity.java:
Код: Выделить всё
@Override
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
@Override
public void onRequestPermissionsResult(int requestCode,
@NonNull String[] permissions,
@NonNull int[] grantResults)
{
super.onRequestPermissionsResult(requestCode, permissions,
grantResults);
OnPermissionsResult onPermissionResult = new
OnPermissionsResult(MainActivity.this,MainActivity.this,
requestCode,
permissions, grantResults);
onPermissionResult.onPermissionsResult();
}
@Override
protected void onStart()
{
super.onStart();
}
@Override
protected void onResume()
{
super.onResume();
// Re-check the permission grant when onResume().
if (ContextCompat.checkSelfPermission(MainActivity.this,
Manifest.permission.CAMERA) !=
PackageManager.PERMISSION_GRANTED)
{
CheckPermission checkPermission =
new CheckPermission(MainActivity.this,
MainActivity.this);
checkPermission.askPermissionBox(new String[]
{PERMISSION_CAMERA}, CAMERA);
}
}
Код: Выделить всё
public class OnPermissionsResult
{
private Context mycontext;
private Activity myactivity;
private int[] mygrandResults;
private String[] mypermissions;
private int myrequestCode;
int permissionChecker = PackageManager.PERMISSION_GRANTED;
public OnPermissionsResult(Context context, Activity activity, int requestCode,
@NonNull String[] permissions, @NonNull int[] grantResults)
{
this.myactivity = activity;
this.mycontext = context;
this.mygrandResults = grantResults;
this.mypermissions = permissions;
this.myrequestCode = requestCode;
}
public void onPermissionsResult()
{
for (int permission: mygrandResults)
{
permissionChecker = permissionChecker + permission;
}
if (permissionChecker == PackageManager.PERMISSION_GRANTED &&
mygrandResults.length > 0)
{
OnPermissionGranted onPermissionGranted =
new OnPermissionGranted(myrequestCode, mycontext, myactivity);
onPermissionGranted.skip_to_next_permission(myrequestCode, myactivity);
}
else if (!ActivityCompat.shouldShowRequestPermissionRationale
(myactivity, mypermissions[0]))
{
AlertDialog.Builder builder = new AlertDialog.Builder(myactivity);
builder.setMessage("This feature is unavailable as this feature requires permission that you have denied. Please allow " + mypermissions[0] + " from settings to proceed further.")
.setTitle("Permission Required")
.setCancelable(false)
.setNegativeButton("Cancel", (dialog, which) ->
{
dialog.dismiss();
})
.setPositiveButton("Settings", (dialog, which) ->
{
try
{
dialog.dismiss();
Intent intent = new Intent();
intent.setAction(Settings.ACTION_APPLICATION_DETAILS_SETTINGS);
Uri uri = Uri.fromParts("package",
myactivity.getPackageName(), null);
intent.setData(uri);
myactivity.startActivity(intent);
}
catch (Exception e)
{
dialog.dismiss();
Intent intent = new Intent();
intent.setAction(Settings.ACTION_APPLICATION_DETAILS_SETTINGS);
myactivity.startActivity(intent);
}
//dialog.dismiss();
});
builder.show();
}
else
{
CheckPermission checkPermission =
new CheckPermission(mycontext, myactivity);
checkPermission.askPermissionBox(mypermissions, myrequestCode);
}
}
Код: Выделить всё
FATAL EXCEPTION: main
Process: com.example.permission, PID: 3291
java.lang.RuntimeException: Unable to resume activity {com.example.permission/com.example.permission.MainActivity}: java.lang.ArrayIndexOutOfBoundsException: length=0; index=0
at android.app.ActivityThread.performResumeActivity(ActivityThread.java:4962)
at android.app.ActivityThread.handleResumeActivity(ActivityThread.java:4995)
at android.app.servertransaction.TransactionExecutor.performLifecycleSequence(TransactionExecutor.java:229)
at android.app.servertransaction.TransactionExecutor.cycleToPath(TransactionExecutor.java:205)
at android.app.servertransaction.TransactionExecutor.executeLifecycleState(TransactionExecutor.java:177)
at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:98)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2443)
at android.os.Handler.dispatchMessage(Handler.java:106)
at android.os.Looper.loopOnce(Looper.java:205)
at android.os.Looper.loop(Looper.java:294)
at android.app.ActivityThread.main(ActivityThread.java:8177)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:552)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:971)
Caused by: java.lang.ArrayIndexOutOfBoundsException: length=0; index=0
at com.example.permission.permission.OnPermissionsResult.onPermissionsResult(OnPermissionsResult.java:49)
at com.example.permission.MainActivity.onRequestPermissionsResult(MainActivity.java:104)
at android.app.Activity.requestPermissions(Activity.java:5479)
at androidx.core.app.ActivityCompat$Api23Impl.requestPermissions(ActivityCompat.java:904)
at androidx.core.app.ActivityCompat.requestPermissions(ActivityCompat.java:545)
at com.example.permission.permission.CheckPermission.askPermissionBox(CheckPermission.java:171)
at com.example.permission.MainActivity.onResume(MainActivity.java:125)
at android.app.Instrumentation.callActivityOnResume(Instrumentation.java:1603)
at android.app.Activity.performResume(Activity.java:8743)
at android.app.ActivityThread.performResumeActivity(ActivityThread.java:4952)
at android.app.ActivityThread.handleResumeActivity(ActivityThread.java:4995)
at android.app.servertransaction.TransactionExecutor.performLifecycleSequence(TransactionExecutor.java:229)
at android.app.servertransaction.TransactionExecutor.cycleToPath(TransactionExecutor.java:205)
at android.app.servertransaction.TransactionExecutor.executeLifecycleState(TransactionExecutor.java:177)
at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:98)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2443)
at android.os.Handler.dispatchMessage(Handler.java:106)
at android.os.Looper.loopOnce(Looper.java:205)
at android.os.Looper.loop(Looper.java:294)
at android.app.ActivityThread.main(ActivityThread.java:8177)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:552)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:971)
Подробнее здесь: https://stackoverflow.com/questions/792 ... to-package
Мобильная версия