2016-06-20 3 views
2

ich versucht, mit URL mit Datei auf dem Web-Aktivität zu senden:Android starten WebBrowser Intent erzeugt Security

public static void startDownloadFileActivity(com.app.model.File file, String link) { 
    Uri uri = Uri.parse(link); 
    Intent intent = new Intent(Intent.ACTION_VIEW); 
    String mime = "*/*"; 
    MimeTypeMap mimeTypeMap = MimeTypeMap.getSingleton(); 
    if (mimeTypeMap.hasMimeType(file.getMimeType())) { 
     mime = file.getMimeType(); 
    } else if (mimeTypeMap.hasExtension(MimeTypeMap.getFileExtensionFromUrl(file.getTitle()))) { 
     mime = mimeTypeMap.getMimeTypeFromExtension(MimeTypeMap.getFileExtensionFromUrl(file.getTitle())); 
    } 
    intent.setDataAndType(uri, mime); 
    try { 
     SDApplication.getInstance().getCurrentActivity().startActivity(intent); 
    } catch (ActivityNotFoundException e) { 
     Logger.logException(ERROR_TAG, "Can't find activity for mime " + mime + "\nReason:" + e.getMessage(), e); 
     ToastUtils.showToast(getContext().getString(R.string.error_no_app_for_mime)); 
    } 
} 

Aber wenn Browser Absicht Web senden erhalten diese:

Fatal Exception: java.lang.SecurityException: Permission Denial: starting Intent { act=android.intent.action.VIEW dat=http://some-stand.com:10012/... typ=*/* cmp=com.google.android.apps.docs/.doclist.documentopener.WebViewOpenActivity } from ProcessRecord{4138e78 8118:com.app/u0a322} (pid=8118, uid=10322) not exported from uid 1
    at android.os.Parcel.readException(Parcel.java:1627) 
    at android.os.Parcel.readException(Parcel.java:1579) 
    at android.app.ActivityManagerProxy.startActivity(ActivityManagerNative.java:2671) 
    at android.app.Instrumentation.execStartActivity(Instrumentation.java:1509) 
    at android.app.Activity.startActivityForResult(Activity.java:3963) 
    at android.app.Activity.startActivityForResult(Activity.java:3924) 
    at android.support.v4.app.FragmentActivity.startActivityForResult(SourceFile:820) 
    at android.app.Activity.startActivity(Activity.java:4247) 
    at android.app.Activity.startActivity(Activity.java:4215) 
    at com.app.utils.FileUtils.startDownloadFileActivity(SourceFile:185) 
    at com.app.activities.FilesActivity$1.onItemClick(SourceFile:157) 
    at android.widget.AdapterView.performItemClick(AdapterView.java:310) 
    at android.widget.AbsListView.performItemClick(AbsListView.java:1145) 
    at android.widget.AbsListView$PerformClick.run(AbsListView.java:3066) 
    at android.widget.AbsListView$3.run(AbsListView.java:3903) 
    at android.os.Handler.handleCallback(Handler.java:739) 
    at android.os.Handler.dispatchMessage(Handler.java:95) 
    at android.os.Looper.loop(Looper.java:224) 
    at android.app.ActivityThread.main(ActivityThread.java:5526) 
    at java.lang.reflect.Method.invoke(Method.java) 
    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726) 
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616) 

Ich verstehe nicht, Welche Erlaubnis brauchen Anwendung, um URL zu öffnen. Und Fehler wird nur von einem Gerät erzeugt: Sony Xperia. Anwendung hat Internet-Berechtigung in AndroidManifest-Datei.

+1

Mögliche Duplikat [Android - java.lang.SecurityException: Permission Denial: Start Intent] (http://stackoverflow.com/questions/19829507/android-java -lang-securityexception-permission-denial-start-intent) – Alexander

+0

Überprüfen Sie zunächst die Internet-Berechtigung in der Datei "menifest.xml". Wenn Sie dann Android 6.0 (API-Stufe 23) verwenden, müssen Sie die Laufzeitberechtigung anfordern nicht rennen. – Vickyexpert

+0

Haben Sie eine Aktivität in Ihrem eigenen Manifest, die solche Absichten behandelt? Ansonsten sollte es einfach den Browser öffnen. –

Antwort

1

Überprüfen Sie die Berechtigung in Ihrer AndroidManifest.xml.

android.permission.INTERNET

+0

Anwendung verfügt über diese Berechtigung – Keles