رفتن به مطلب
انجمن توسعه دهندگان موبایل

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


ارسال های توصیه شده

سلام

من یک برنامه نوشتم که یک فایل 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>

 

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

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

درود

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

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

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

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

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

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

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

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

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

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

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

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

لینک ارسال

بایگانی شده

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

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