رفتن به مطلب

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

سلام

من یک برنامه نوشتم که یک فایل apk رو فراخوانی میکنه و وارد صفحه ی نصب میشه

در تمام اندروید ها به جز اندروید 7 و 8 به خوبی کار میکنه اما روی 7 و 8 فورس کلوز میده

از fileprovider برای اندروید 7 و بیشتر از 7 استفاده کردم

لطفا کمک کنید

 

 

 

package com.example.ali.filep;

import android.Manifest;
import android.app.Activity;
import android.app.ProgressDialog;
import android.content.Context;
import android.content.Intent;
import android.content.pm.PackageManager;
import android.content.res.AssetManager;
import android.net.Uri;
import android.os.Build;
import android.os.Bundle;
import android.os.Environment;
import android.os.Handler;
import android.support.annotation.NonNull;
import android.support.v4.app.ActivityCompat;
import android.support.v4.content.FileProvider;
import android.util.Log;
import android.view.View;
import android.widget.Button;
import android.widget.Toast;

import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;

import uk.co.chrisjenx.calligraphy.CalligraphyContextWrapper;


public class MainActivity extends Activity {
  

    final Context context = this;


    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        Button mybutton = (Button)findViewById(R.id.b);
        mybutton.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
String path = Environment.getExternalStorageDirectory() + "/Download/" + "myapk.apk";
                InstallUpdate(path );

            }
        });
    }




    public void InstallUpdate(String path) {
        final File toInstall = new File(path);
        if (Build.VERSION.SDK_INT >= 24) {
            Uri apkUri = FileProvider.getUriForFile(context, "sheiday.ptsu.com.installer.fileprovider", toInstall);
            Intent install = new Intent(Intent.ACTION_VIEW);
            install.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
            install.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION);
            install.setDataAndType(apkUri, "application/vnd.android.package-archive");
            context.startActivity(install);

        } else {
            Uri apkUri = Uri.fromFile(toInstall);
            Intent intent = new Intent(Intent.ACTION_VIEW);
            intent.setDataAndType(apkUri, "application/vnd.android.package-archive");
            intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
            this.startActivity(intent);


        }
    }

    public 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;
        }
    }

    @Override
    public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull 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
        }
    }

    public void Deleteupdeate() {
        File file = new File(Environment.getExternalStorageDirectory() + "/Download/" + "yourapk.apk");
        boolean d = file.delete();
        if (file.exists()) {
            try {
                file.getCanonicalFile().delete();
            } catch (IOException e) {
                e.printStackTrace();
            }
            if (file.exists()) {
                getApplicationContext().deleteFile(file.getName());
            }
            if (!file.exists()) {
                Toast.makeText(this, "delete file downloaded", Toast.LENGTH_LONG).show();
            }
        }
    }
}

 

 

 

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="yournamePackge" >
    <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"></uses-permission>

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"></uses-permission>
    <application
        android:allowBackup="true"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:supportsRtl="true"
        android:theme="@style/AppTheme" >
        <activity android:name=".MainActivity" >
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
        <provider
            android:name="android.support.v4.content.FileProvider"
            android:authorities="yourpackge.fileprovider"
            android:exported="false"
            android:grantUriPermissions="true">
            <meta-data
                android:name="android.support.FILE_PROVIDER_PATHS"
                android:resource="@xml/filepath" />
        </provider>
    </application>

</manifest>

 

و یک فایل xml هم داره به نام filepath

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <paths>
        <external-path path="" name="download"/>
    </paths>
</resources>

و اینم xml اصلی

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:id="@+id/activity_main"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".MainActivity">

    <Button
        android:text="Button"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentBottom="true"
        android:layout_centerHorizontal="true"
        android:layout_marginBottom="110dp"
        android:id="@+id/b" />
</RelativeLayout>

 

برای اندروید 7 به صورت دستی میرم تنظیمات و پرمیشن رو اجازه میدم اما بازم فورس کلوز میده

 

ممنون از راهنمایی تون

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


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

درود

فایل apk که فراخوانی میکنید مطمئن هستید روی اندروید 8 کار میکنه ؟

روی اپ دیگری تست کنید

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


لینک به ارسال
به اشتراک گذاری در سایت های دیگر
ارسال شده در (ویرایش شده)
در 15 ساعت قبل، ali666645 گفته است :

<provider
            android:name="android.support.v4.content.FileProvider"
            android:authorities="yourpackge.fileprovider"
            android:exported="false"
            android:grantUriPermissions="true">
            <meta-data
                android:name="android.support.FILE_PROVIDER_PATHS"
                android:resource="@xml/filepath" />
        </provider>

 

دستور اجرا نمیشه

ویرایش شده در توسط hadi9823

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


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

درود

فایل apk که فراخوانی میکنید مطمئن هستید روی اندروید 8 کار میکنه ؟

روی اپ دیگری تست کنید

نه روی اندروید 8  نه اندروید 7 اجرا نمیشه

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


لینک به ارسال
به اشتراک گذاری در سایت های دیگر
در 34 دقیقه قبل، hadi9823 گفته است :

دستور اجرا نمیشه

خوب چه جوری درستش کنم که اجرا بشه؟

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


لینک به ارسال
به اشتراک گذاری در سایت های دیگر
در 11 دقیقه قبل، ali666645 گفته است :

نه روی اندروید 8  نه اندروید 7 اجرا نمیشه

دوست عزیز منظورم اپلیکیشنی بود که میخواهید اون رو توسط ابزارتون هندل کنید 

خدمتتون عرض کردم اپ دیگری رو برای تست هندل کنید ببینید کار میده 

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


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

دوست عزیز منظورم اپلیکیشنی بود که میخواهید اون رو توسط ابزارتون هندل کنید 

خدمتتون عرض کردم اپ دیگری رو برای تست هندل کنید ببینید کار میده 

درود چنتا اپ رو تست کردم جواب نداد در هر صورت پس از فشار دادن کلید فورس کلوز میده

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


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

از سورس کد فایل activity_main.xml بزار ببینیم مشکل کجاست؟

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


لینک به ارسال
به اشتراک گذاری در سایت های دیگر
در 21 دقیقه قبل، hadi9823 گفته است :

این سورس force close رو ایمپورت کن داخل برنامه

https://github.com/hardik-trivedi/ForceClose

ببخشید من تازه واردم نمیدونم این سورس رو چه طوری وارد برنامه کنم؟

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


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

ببخشید من تازه واردم نمیدونم این سورس رو چه طوری وارد برنامه کنم؟

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

بیا این مطلبو بخون تا بتونی راحت ایمپورت کنی:

https://trivedihardik.wordpress.com/2011/08/20/how-to-avoid-force-close-error-in-android

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


لینک به ارسال
به اشتراک گذاری در سایت های دیگر
در 21 دقیقه قبل، hadi9823 گفته است :

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

بیا این مطلبو بخون تا بتونی راحت ایمپورت کنی:

https://trivedihardik.wordpress.com/2011/08/20/how-to-avoid-force-close-error-in-android

3 فایل جاوا داخل سورس github داشت که دو تا رو کپی کردم داخل پروژه ی خوددم دیگری mainActivity.java بود رو متد داخلش رو کپی کردم داخل mainactivity خودم در بالا ی قسمتی از کد که موجب ارور میشد

پس از اجرا اسکرین شات زیر رو گرفتم

Screenshot_1544266607.png

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


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

منظور بنده جایگزاری کد سورس بصورت important! بود

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


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

منظور بنده جایگزاری کد سورس بصورت important! بود

اقا شرمنده من اینجوری بلد نیست لطف میکنی پروژه رو دانلود کنی ایمپورت کنی بالا لینک دانلود پروژه رو گذاشتم

من واقعا اون مدلی که میگین ایمپورت کردن بلد نیستم چیزی هم تو اینترنت درباره ایمپورت سورس توی یک پروژه پیدا نکردم

اینم لینک دانلود پروژه ممنون https://drive.google.com/file/d/1i4N_GrPTfVYeVIdjbtHKteVvRCvV6G92/view

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


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

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

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

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

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

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

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

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

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

×