2016-09-14 33 views
7

Uygulamamın bir APK indiren ve daha sonra paket yükleyiciyi açmak için Intent.ACTION_VIEW kullanan bir otomatik güncelleme özelliği var.Android 7 openlight with ACTION_VIEW not working (Paket yükleyici durdu)

7'ye kadar o (normal dosya ile Niyet besleyerek: //) mükemmel çalıştı Android 7 ile

Bir FileProvider kullanmak değiştirmek zorunda kaldı. kodunda tek fark: startActivity bu her zaman

enter image description here

bu Android 7 ile bir hata mı olsun denir

Intent installIntent = new Intent(Intent.ACTION_VIEW); 
      if (android.os.Build.VERSION.SDK_INT <= Build.VERSION_CODES.M) { 
      installIntent.setDataAndType(uri, 
       manager.getMimeTypeForDownloadedFile(downloadId)); 
      } else { 

      Uri apkUri = FileProvider.getUriForFile(AutoUpdate.this, 
       BuildConfig.APPLICATION_ID, file); 
       installIntent.setDataAndType(apkUri,manager.getMimeTypeForDownloadedFile(downloadId)); 
      } 
      activity.startActivity(installIntent); 

kez? Ya da bir şey/izin benim tarafımdan eksik mi?

DÜZENLEME AndroidManifest

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/> 
    <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/> 
    <uses-permission android:name="android.permission.INTERNET" /> 
    <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" /> 
    <uses-permission android:name="android.permission.WAKE_LOCK" /> 
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> 
    <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" /> 
    <uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW" /> 
    <uses-permission android:name="android.permission.READ_LOGS" /> 

<application ...> 
... 
    <provider 
      android:name="android.support.v4.content.FileProvider" 
      android:authorities="com.myapp" 
      android:exported="false" 
      android:enabled="true" 
      android:grantUriPermissions="true"> 
      <meta-data 
       android:name="android.support.FILE_PROVIDER_PATHS" 
       android:resource="@xml/provider_paths"/> 
     </provider> 
    </application> 

<?xml version="1.0" encoding="utf-8"?> 
<paths xmlns:android="http://schemas.android.com/apk/res/android"> 
    <external-path name="myfolder" path="."/> 
</paths> 
+0

size apaçık gönderebilir miyim yardımcı aşağıda gibi deneyin? – Techidiot

+0

Ekledim. Bu emülatör yanı sıra gerçek yakışıklı – Johny19

+0

@ Johny19 hey ben aynı sorunu var ... nasıl olduğunu nasıl düzeltildiğini unutmayın, lütfen bana – Mariyappan

cevap

1

benim ve Android N7.0 içinde çalışma

File toInstall = new File(appDirectory, appName + ".apk"); 
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) { 
    Uri apkUri = FileProvider.getUriForFile(activity, BuildConfig.APPLICATION_ID + ".provider", toInstall); 
    Intent intent = new Intent(Intent.ACTION_INSTALL_PACKAGE); 
    intent.setData(apkUri); 
    intent.setFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION); 
    activity.startActivity(intent) 
} 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); 
    activity.startActivity(intent); 
} 
+0

Günümü kurtardım! Kabul edilen cevap olmalı. –

İlgili konular