رفتن به مطلب
انجمن اندروید ایران | آموزش برنامه نویسی اندروید و موبایل
  • android.png.1fab383bc8500cd93127cebc65b1dcab.png

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


پست های پیشنهاد شده

باسلام

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

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

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

ارور را که بررسی کردم در همون کلاس که از جنس اپلیکیشن هست  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" />

 

لینک ارسال
به اشتراک گذاری در سایت های دیگر
در هم اکنون، 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 از برنامه خودم اطلاعات به سرورم بفرستم.

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

به گفتگو بپیوندید

هم اکنون می توانید مطلب خود را ارسال نمایید و بعداً ثبت نام کنید. اگر حساب کاربری دارید، برای ارسال با حساب کاربری خود اکنون وارد شوید .

مهمان
ارسال پاسخ به این موضوع...

×   شما در حال چسباندن محتوایی با قالب بندی هستید.   حذف قالب بندی

  تنها استفاده از 75 اموجی مجاز می باشد.

×   لینک شما به صورت اتوماتیک جای گذاری شد.   نمایش به صورت لینک

×   محتوای قبلی شما بازگردانی شد.   پاک کردن محتوای ویرایشگر

×   شما مستقیما نمی توانید تصویر خود را قرار دهید. یا آن را اینجا بارگذاری کنید یا از یک URL قرار دهید.

×
×
  • اضافه کردن...