मेरे ऐप में एक ऑटो अपडेट सुविधा है जो एक एपीके डाउनलोड करती है और फिर पैकेज इंस्टॉलर खोलने के लिए एक Intent.ACTION_VIEW का उपयोग करती है।ACTION_VIEW के साथ एंड्रॉइड 7 ओपन एपीके काम नहीं कर रहा है (पैकेज इंस्टॉलर बंद हो गया है)
7 अप करने के लिए यह पूरी तरह से काम किया है (एक सामान्य फ़ाइल के साथ आशय खिला द्वारा: //)
एंड्रॉयड 7 के साथमैं एक FileProvider उपयोग करने के लिए बदलना पड़ा। कोड में फर्क सिर्फ इतना है:
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);
एक बार startActivity कहा जाता है मैं इस हर बार
इस Android 7 के साथ एक बग है मिल सकता है? या कुछ पक्ष/अनुमति मेरी तरफ गुम है?
संपादित 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>
आप अपने प्रकट पोस्ट कर सकते हैं मदद की? – Techidiot
मैंने इसे जोड़ा है। ध्यान दें कि यह एम्यूलेटर के साथ-साथ वास्तविक हैंडसेट पर भी होता है – Johny19
@ जॉनी 1 हे, मुझे एक ही समस्या है ... आपने इसे कैसे ठीक किया है ..., कृपया मुझे – Mariyappan