Javad Mahmoodi

مشکل در اجرای برنامه

18 ارسال در این موضوع قرار دارد

باسلام

من یک کلاس از جنس اپلیکیشن دارم که داخلش دسترسی به دیتابیس اسکیوال لایت داده شده.

پروژه من هیچ اروری نداره.

اما زمانی که برنامه را اجرا میکنم قبل از بالا اومدن برنامه بهم فورس کلوز میده.

ارور را که بررسی کردم در همون کلاس که از جنس اپلیکیشن هست  can not open database را میده.درصورتی که قبلا این برنامه را اجرا میکردم بدون هیچ مشکلی کار میکرد.

از شما دوستان خواهشمند است راهنمایی بفرمایید

پیشاپیش از لطف شما دوستان سپاسگذارم

 

به اشتراک گذاری این پست


لینک به ارسال
به اشتراک گذاری در سایت های دیگر

آیا کلاس را در Manifest معرفی کردید به تگ name ؟

چرا دیتابیس رو در کلاس Application  میاید و   open میکنید ؟

 

کد کلاس Application  را قرار بدین

به اشتراک گذاری این پست


لینک به ارسال
به اشتراک گذاری در سایت های دیگر
در 1 دقیقه قبل، Farzad Sarseifi گفته است :

آیا کلاس را در Manifest معرفی کردید به تگ name ؟

چرا دیتابیس رو در کلاس Application  میاید و   open میکنید ؟

 

کد کلاس Application  را قرار بدین

بله در مانیفست در تگ name اضافه کردیم


import android.app.Application;
import android.content.Context;
import android.content.Intent;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.os.Environment;
import java.io.File;
import java.util.ArrayList;
import java.util.List;


public class G extends Application {

    public Context context;
    public static SQLiteDatabase database;
    public static final String DIR_SDCARD = Environment.getExternalStorageDirectory().getAbsolutePath();
    public static final String DIR_DATABASE = DIR_SDCARD + "/database/";
    public static String name;

    @Override
    public void onCreate() {
        super.onCreate();

        context = this.getApplicationContext();

        new File(DIR_DATABASE).mkdirs();

        database = SQLiteDatabase.openOrCreateDatabase(DIR_DATABASE + "database.sqlite", null);
        


       }
}

 

به اشتراک گذاری این پست


لینک به ارسال
به اشتراک گذاری در سایت های دیگر
در 10 دقیقه قبل، Javad Mahmoodi گفته است :

بله در مانیفست در تگ name اضافه کردیم



import android.app.Application;
import android.content.Context;
import android.content.Intent;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.os.Environment;
import java.io.File;
import java.util.ArrayList;
import java.util.List;


public class G extends Application {

    public Context context;
    public static SQLiteDatabase database;
    public static final String DIR_SDCARD = Environment.getExternalStorageDirectory().getAbsolutePath();
    public static final String DIR_DATABASE = DIR_SDCARD + "/database/";
    public static String name;

    @Override
    public void onCreate() {
        super.onCreate();

        context = this.getApplicationContext();

        new File(DIR_DATABASE).mkdirs();

        database = SQLiteDatabase.openOrCreateDatabase(DIR_DATABASE + "database.sqlite", null);
        


       }
}

 

پرمیشن برای دسترسی به خواندن یا نوشتن اطلاعات رو قرار دادید یا خیر؟

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />

 

به اشتراک گذاری این پست


لینک به ارسال
به اشتراک گذاری در سایت های دیگر
در هم اکنون، شاهرخ جهان زاده گفته است :

پرمیشن برای دسترسی به خواندن یا نوشتن اطلاعات رو قرار دادید یا خیر؟


<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />

 

بله

دقیقا این خط را تو مانیفست دارم

به اشتراک گذاری این پست


لینک به ارسال
به اشتراک گذاری در سایت های دیگر
File file = new File(DIR_DATABASE);    
if (file.exists() && !file.isDirectory()) {
    //do what ever...
}

با این کد بررسی کنید ببنید فایل موجود هست یا نه

ویرایش شده در توسط شاهرخ جهان زاده

به اشتراک گذاری این پست


لینک به ارسال
به اشتراک گذاری در سایت های دیگر
در 4 دقیقه قبل، شاهرخ جهان زاده گفته است :

File file = new File(DIR_DATABASE);    
if (file.exists() && !file.isDirectory()) {
    //do what ever...
}

با این کد بررسی کنید ببنید فایل موجود هست یا نه

من فایلشو (فولدر و دیتابیس)حتی دستی ایجاد کردم اما بازم فورس کلوز میده.

به اشتراک گذاری این پست


لینک به ارسال
به اشتراک گذاری در سایت های دیگر
در 9 دقیقه قبل، Javad Mahmoodi گفته است :

من فایلشو (فولدر و دیتابیس)حتی دستی ایجاد کردم اما بازم فورس کلوز میده.

چرا دیتابیس رو در کلاس Application انجام میسازید؟؟

به اشتراک گذاری این پست


لینک به ارسال
به اشتراک گذاری در سایت های دیگر
در هم اکنون، شاهرخ جهان زاده گفته است :

چرا دیتابیس رو در کلاس Application انجام میسازید؟؟

من با این روش یاد گرفتم و از دیتابیس هندلر استفاده نکردم

به اشتراک گذاری این پست


لینک به ارسال
به اشتراک گذاری در سایت های دیگر

روی چه ورژن اندرویدی برنامه را تست میکنید؟

در 32 دقیقه قبل، Javad Mahmoodi گفته است :

من با این روش یاد گرفتم و از دیتابیس هندلر استفاده نکردم

 

به اشتراک گذاری این پست


لینک به ارسال
به اشتراک گذاری در سایت های دیگر
در هم اکنون، Farzad Sarseifi گفته است :

روی چه ورژن اندرویدی برنامه را تست میکنید؟

 

اندروید6(Api23)

به اشتراک گذاری این پست


لینک به ارسال
به اشتراک گذاری در سایت های دیگر
در 2 دقیقه قبل، Javad Mahmoodi گفته است :

اندروید6(Api23)

آیا Grant Permission برای Storage را در نظر گرفته اید ؟

به اشتراک گذاری این پست


لینک به ارسال
به اشتراک گذاری در سایت های دیگر
در 1 دقیقه قبل، Farzad Sarseifi گفته است :

آیا Grant Permission برای Storage را در نظر گرفته اید ؟

چی هست؟

متوجه منظورتون نشدم؟؟!!

به اشتراک گذاری این پست


لینک به ارسال
به اشتراک گذاری در سایت های دیگر
در هم اکنون، Javad Mahmoodi گفته است :

چی هست؟

متوجه منظورتون نشدم؟؟!!

این کد مانیفست من قسمت پرمیژن ها هستش

 <uses-feature
        android:name="android.hardware.camera"
        android:required="false"/>

    <uses-permission android:name="android.permission.USE_FINGERPRINT" />
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
    <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>
    <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/>
    <uses-permission android:name="android.permission.READ_PHONE_STATE"/>
    <uses-permission android:name="android.permission.USE_FINGERPRINT" />
    <uses-permission android:name="android.permission.INTERNET" />
    <uses-permission android:name="android.permission.VIBRATE" />

 

به اشتراک گذاری این پست


لینک به ارسال
به اشتراک گذاری در سایت های دیگر

خیر باید Grant Permission را اعمال کنید برای اندروید 6 به بالاتر

 

به اشتراک گذاری این پست


لینک به ارسال
به اشتراک گذاری در سایت های دیگر
در هم اکنون، Farzad Sarseifi گفته است :

خیر باید Grant Permission را اعمال کنید برای اندروید 6 به بالاتر

 

میشه راهنمایی کنید چجور این کار را انجام بدم؟!

به اشتراک گذاری این پست


لینک به ارسال
به اشتراک گذاری در سایت های دیگر

این متد را اجرا کنید

ublic  boolean isStoragePermissionGranted() {
    if (Build.VERSION.SDK_INT >= 23) {
        if (checkSelfPermission(android.Manifest.permission.WRITE_EXTERNAL_STORAGE)
                == PackageManager.PERMISSION_GRANTED) {
            Log.v(TAG,"Permission is granted");
            return true;
        } else {

            Log.v(TAG,"Permission is revoked");
            ActivityCompat.requestPermissions(this, new String[]{Manifest.permission.WRITE_EXTERNAL_STORAGE}, 1);
            return false;
        }
    }
    else { //permission is automatically granted on sdk<23 upon installation
        Log.v(TAG,"Permission is granted");
        return true;
    }
}

Call back نتیجه Permission

 

@Override
public void onRequestPermissionsResult(int requestCode, String[] permissions, int[] grantResults) {
    super.onRequestPermissionsResult(requestCode, permissions, grantResults);
    if(grantResults[0]== PackageManager.PERMISSION_GRANTED){
        Log.v(TAG,"Permission: "+permissions[0]+ "was "+grantResults[0]);
        //resume tasks needing this permission
    }
}

 

1 کاربر پسند دیده است

به اشتراک گذاری این پست


لینک به ارسال
به اشتراک گذاری در سایت های دیگر
در در 1396/06/25, 12:25:00، شاهرخ جهان زاده گفته است :

 

سلام

مهندس چجوری میتونم با کتابخانه volly از برنامه خودم اطلاعات به سرورم بفرستم.

به اشتراک گذاری این پست


لینک به ارسال
به اشتراک گذاری در سایت های دیگر

برای ارسال نظر یک حساب کاربری ایجاد کنید یا وارد حساب خود شوید

برای اینکه بتوانید نظر ارسال کنید نیاز دارید که کاربر سایت شوید

ایجاد یک حساب کاربری

برای حساب کاربری جدید در انجمن ما ثبت نام کنید. عضویت خیلی ساده است !


ثبت نام یک حساب کاربری جدید

ورود به حساب کاربری

دارای حساب کاربری هستید؟ از اینجا وارد شوید


ورود به حساب کاربری